mirror of
https://github.com/zoriya/vim.git
synced 2026-01-05 05:48:14 +00:00
Compare commits
197 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0e34f6269e | ||
|
|
3517bb1ece | ||
|
|
65c923adf3 | ||
|
|
bfb2d40b6e | ||
|
|
a55252087b | ||
|
|
8fd89f0fe7 | ||
|
|
0b23879827 | ||
|
|
c06ac34092 | ||
|
|
b475fb917b | ||
|
|
261bfeab3e | ||
|
|
fd2ac767eb | ||
|
|
e1438bb8d0 | ||
|
|
e224ffa156 | ||
|
|
03f4855fc2 | ||
|
|
b388adb188 | ||
|
|
5e3cb7e869 | ||
|
|
eddf53b02e | ||
|
|
a23ccb8ac6 | ||
|
|
1cad292503 | ||
|
|
a226a6dd9f | ||
|
|
a562149de3 | ||
|
|
5c8837f9d7 | ||
|
|
c542aef58d | ||
|
|
ba6c05240f | ||
|
|
32466aa2e9 | ||
|
|
2a3f7eeebf | ||
|
|
df1bdc92c2 | ||
|
|
80a94a582c | ||
|
|
d1f56e68f1 | ||
|
|
238a564935 | ||
|
|
8f7fd65b24 | ||
|
|
030f0dfad5 | ||
|
|
faa959a870 | ||
|
|
70836c8ba8 | ||
|
|
2a0449d129 | ||
|
|
7e8fd63682 | ||
|
|
997fb4ba69 | ||
|
|
49d7bf13e0 | ||
|
|
f740b29ae2 | ||
|
|
4c7ed462cb | ||
|
|
e45828b593 | ||
|
|
98ea5defcf | ||
|
|
1d2ba7fa85 | ||
|
|
f52c725c47 | ||
|
|
c7453f52d4 | ||
|
|
110bc6bc91 | ||
|
|
06b5db9397 | ||
|
|
3d0a603fa9 | ||
|
|
754b56089f | ||
|
|
cf0c554e3f | ||
|
|
8b6144bdfe | ||
|
|
9f2c6e1deb | ||
|
|
a65576059f | ||
|
|
41cabdadc2 | ||
|
|
a37420f46f | ||
|
|
0e5bd96f84 | ||
|
|
986920760e | ||
|
|
49315f65c9 | ||
|
|
1ef15e30a0 | ||
|
|
afeb4fa8a7 | ||
|
|
b8a7b560b1 | ||
|
|
280f126ef0 | ||
|
|
17c7c01170 | ||
|
|
51156d5a87 | ||
|
|
6ab5b84db4 | ||
|
|
d12f5c17be | ||
|
|
28c258fd24 | ||
|
|
7df351eb8a | ||
|
|
09df3127f4 | ||
|
|
33aec765bd | ||
|
|
71fe80dddd | ||
|
|
66fa271a25 | ||
|
|
0ac9379acf | ||
|
|
c716c306e9 | ||
|
|
b1b715d1fb | ||
|
|
b71eaaeaa8 | ||
|
|
2d3f489e09 | ||
|
|
8ada17c4d9 | ||
|
|
05a7bb363b | ||
|
|
c32840f267 | ||
|
|
04dbce064e | ||
|
|
316059c019 | ||
|
|
ea8bd73212 | ||
|
|
a40ceaf88a | ||
|
|
4770d09abd | ||
|
|
1cbe5f739d | ||
|
|
c7486e034e | ||
|
|
86e01085a1 | ||
|
|
371baa928d | ||
|
|
ebefac63f3 | ||
|
|
cc984263d7 | ||
|
|
0ce33f34a4 | ||
|
|
8fa0445c4f | ||
|
|
5c2f050d91 | ||
|
|
f4cd3e8074 | ||
|
|
bb1004ee56 | ||
|
|
a9b1e74b5d | ||
|
|
195d6357b4 | ||
|
|
46b8015066 | ||
|
|
e3226be91a | ||
|
|
d35f9711d4 | ||
|
|
da1b1a7357 | ||
|
|
3b18181f28 | ||
|
|
acf534595b | ||
|
|
97d29a1ace | ||
|
|
146522e760 | ||
|
|
83c465c705 | ||
|
|
12033fb4bf | ||
|
|
bca84a12bd | ||
|
|
38f1825274 | ||
|
|
61da4986dd | ||
|
|
6496966ad1 | ||
|
|
b2c2efa53a | ||
|
|
c6d8db78b1 | ||
|
|
b0bf8580c3 | ||
|
|
900b4d77f0 | ||
|
|
2c7a29c7fd | ||
|
|
5b962cf71c | ||
|
|
63a121b750 | ||
|
|
b348038631 | ||
|
|
292ad19e92 | ||
|
|
cdbac1ee33 | ||
|
|
cc016f5410 | ||
|
|
e5180526fd | ||
|
|
24552beda0 | ||
|
|
43abc52195 | ||
|
|
ba930509b0 | ||
|
|
18f9a79673 | ||
|
|
77197e44d6 | ||
|
|
d5bc83f576 | ||
|
|
4e330bbf21 | ||
|
|
b815dac061 | ||
|
|
be79f90adc | ||
|
|
e64ac77a28 | ||
|
|
241a8aaa48 | ||
|
|
9372a11ca6 | ||
|
|
cef9dcc37e | ||
|
|
943d2b5b80 | ||
|
|
f4d1145328 | ||
|
|
c6039d8fcb | ||
|
|
bba577a242 | ||
|
|
36c31f71ad | ||
|
|
9835862c81 | ||
|
|
a39571032c | ||
|
|
c64d13ad5b | ||
|
|
16d8f87b45 | ||
|
|
5fe38612c9 | ||
|
|
3d2381ec09 | ||
|
|
b4d392824a | ||
|
|
12625caaa3 | ||
|
|
1afcace307 | ||
|
|
c20658076d | ||
|
|
a5792f5890 | ||
|
|
af289d333a | ||
|
|
a5fac54aea | ||
|
|
61036991ab | ||
|
|
8349fd7c7e | ||
|
|
784c614cb1 | ||
|
|
95b28ecc4a | ||
|
|
202795bed4 | ||
|
|
a5fb28b609 | ||
|
|
d5cdbeb8dd | ||
|
|
196dfbcca1 | ||
|
|
ac30844d60 | ||
|
|
4b77947252 | ||
|
|
8d4f404a7b | ||
|
|
9b9714bee4 | ||
|
|
761b1131b8 | ||
|
|
07d4d7328a | ||
|
|
1c7715dfe4 | ||
|
|
bb15b65864 | ||
|
|
69e0ff94dc | ||
|
|
c54b8a78fa | ||
|
|
f25fd51b89 | ||
|
|
4effc80a8c | ||
|
|
482aaeb058 | ||
|
|
4463f296d0 | ||
|
|
1e01546026 | ||
|
|
bfd8fc0529 | ||
|
|
60a795aad6 | ||
|
|
6b730e111c | ||
|
|
58071af793 | ||
|
|
ab194816fe | ||
|
|
cd292719e0 | ||
|
|
4c903f9891 | ||
|
|
e6facf9490 | ||
|
|
f75a963eea | ||
|
|
5e0d6678ad | ||
|
|
6efa2b30f4 | ||
|
|
dcca87b394 | ||
|
|
578b49e4f7 | ||
|
|
32330d3c67 | ||
|
|
d43b6cf7de | ||
|
|
a4a0838802 | ||
|
|
e7eb9df59a | ||
|
|
a5373faa17 | ||
|
|
7ca3043e1e |
33
Filelist
33
Filelist
@@ -2,7 +2,7 @@
|
||||
# Used by Makefile and upload.aap.
|
||||
|
||||
# source files for all source archives
|
||||
SRC_ALL1 = \
|
||||
SRC_ALL = \
|
||||
src/README.txt \
|
||||
src/arabic.c \
|
||||
src/arabic.h \
|
||||
@@ -52,6 +52,7 @@ SRC_ALL1 = \
|
||||
src/ops.c \
|
||||
src/option.c \
|
||||
src/option.h \
|
||||
src/popupmenu.c \
|
||||
src/quickfix.c \
|
||||
src/regexp.c \
|
||||
src/regexp.h \
|
||||
@@ -71,13 +72,12 @@ SRC_ALL1 = \
|
||||
src/vim.h \
|
||||
src/window.c \
|
||||
src/xxd/xxd.c \
|
||||
|
||||
SRC_ALL2 = \
|
||||
src/main.aap \
|
||||
src/testdir/main.aap \
|
||||
src/testdir/*.in \
|
||||
src/testdir/test[0-9]*.ok \
|
||||
src/testdir/test49.vim \
|
||||
src/testdir/test60.vim \
|
||||
src/proto.h \
|
||||
src/proto/buffer.pro \
|
||||
src/proto/charset.pro \
|
||||
@@ -111,6 +111,7 @@ SRC_ALL2 = \
|
||||
src/proto/normal.pro \
|
||||
src/proto/ops.pro \
|
||||
src/proto/option.pro \
|
||||
src/proto/popupmenu.pro \
|
||||
src/proto/quickfix.pro \
|
||||
src/proto/regexp.pro \
|
||||
src/proto/screen.pro \
|
||||
@@ -136,7 +137,6 @@ SRC_UNIX = \
|
||||
pixmaps/gen-inline-pixbufs.sh \
|
||||
pixmaps/stock_icons.h \
|
||||
src/INSTALL \
|
||||
src/INSTALLkde.txt \
|
||||
src/Makefile \
|
||||
src/auto/configure \
|
||||
src/config.aap.in \
|
||||
@@ -153,11 +153,6 @@ SRC_UNIX = \
|
||||
src/gui_gtk_f.c \
|
||||
src/gui_gtk_f.h \
|
||||
src/gui_gtk_x11.c \
|
||||
src/gui_kde.cc \
|
||||
src/gui_kde_wid.cc \
|
||||
src/gui_kde_wid.h \
|
||||
src/gui_kde_x11.cc \
|
||||
src/kvim_iface.h \
|
||||
src/gui_motif.c \
|
||||
src/gui_xmdlg.c \
|
||||
src/gui_xmebw.c \
|
||||
@@ -183,8 +178,6 @@ SRC_UNIX = \
|
||||
src/proto/gui_athena.pro \
|
||||
src/proto/gui_gtk.pro \
|
||||
src/proto/gui_gtk_x11.pro \
|
||||
src/proto/gui_kde.pro \
|
||||
src/proto/gui_kde_x11.pro \
|
||||
src/proto/gui_motif.pro \
|
||||
src/proto/gui_xmdlg.pro \
|
||||
src/proto/gui_x11.pro \
|
||||
@@ -217,6 +210,7 @@ SRC_DOS_UNIX = \
|
||||
src/if_perlsfio.c \
|
||||
src/if_python.c \
|
||||
src/if_ruby.c \
|
||||
src/if_sniff.h \
|
||||
src/if_tcl.c \
|
||||
src/proto/if_cscope.pro \
|
||||
src/proto/if_mzsch.pro \
|
||||
@@ -362,21 +356,14 @@ SRC_AMI = \
|
||||
# source files for the Mac (also in the extra archive)
|
||||
SRC_MAC = \
|
||||
src/INSTALLmac.txt \
|
||||
src/Make_mpw.mak \
|
||||
src/dehqx.py \
|
||||
src/gui_mac.c \
|
||||
src/gui_mac.icns \
|
||||
src/gui_mac.r \
|
||||
src/os_mac.build \
|
||||
src/os_mac.c \
|
||||
src/os_mac.h \
|
||||
src/os_mac.rsr.hqx \
|
||||
src/os_mac.sit.hqx \
|
||||
src/os_mac_conv.c \
|
||||
src/os_macosx.c \
|
||||
src/os_mac.pbproj/project.pbxproj \
|
||||
src/proto/gui_mac.pro \
|
||||
src/proto/os_mac.pro \
|
||||
src/proto/os_mac_conv.pro \
|
||||
|
||||
# source files for VMS (in the extra archive)
|
||||
@@ -427,7 +414,6 @@ SRC_EXTRA = \
|
||||
src/gui_riscos.c \
|
||||
src/gui_riscos.h \
|
||||
src/if_sniff.c \
|
||||
src/if_sniff.h \
|
||||
src/infplist.xml \
|
||||
src/link.390 \
|
||||
src/os_beos.c \
|
||||
@@ -459,6 +445,7 @@ RT_ALL = \
|
||||
runtime/gvimrc_example.vim \
|
||||
runtime/macros/README.txt \
|
||||
runtime/macros/dvorak \
|
||||
runtime/macros/editexisting.vim \
|
||||
runtime/macros/hanoi/click.me \
|
||||
runtime/macros/hanoi/hanoi.vim \
|
||||
runtime/macros/hanoi/poster \
|
||||
@@ -533,10 +520,6 @@ RT_UNIX = \
|
||||
runtime/KVim.desktop \
|
||||
runtime/hi16-action-make.png \
|
||||
runtime/hi22-action-make.png \
|
||||
runtime/kde-tips \
|
||||
runtime/kvim32x32.png \
|
||||
runtime/kvim48x48.png \
|
||||
runtime/kvim64x64.png \
|
||||
runtime/vim16x16.png \
|
||||
runtime/vim16x16.xpm \
|
||||
runtime/vim32x32.png \
|
||||
@@ -685,6 +668,7 @@ LANG_GEN = \
|
||||
runtime/tutor/tutor.ko.* \
|
||||
runtime/tutor/tutor.pl.* \
|
||||
runtime/tutor/tutor.ru.* \
|
||||
runtime/tutor/tutor.sk.* \
|
||||
runtime/tutor/tutor.zh.* \
|
||||
runtime/spell/README.txt \
|
||||
runtime/spell/??/*.diff \
|
||||
@@ -700,6 +684,9 @@ LANG_GEN_BIN = \
|
||||
runtime/spell/en.ascii.spl \
|
||||
runtime/spell/en.latin1.spl \
|
||||
runtime/spell/en.utf-8.spl \
|
||||
runtime/spell/en.ascii.sug \
|
||||
runtime/spell/en.latin1.sug \
|
||||
runtime/spell/en.utf-8.sug \
|
||||
|
||||
# all files for lang archive
|
||||
LANG_SRC = \
|
||||
|
||||
75
Makefile
75
Makefile
@@ -37,8 +37,6 @@ all install uninstall tools config configure proto depend lint tags types test t
|
||||
#
|
||||
# TARGET PRODUCES CONTAINS
|
||||
# unixall vim-#.#.tar.bz2 Runtime files and Sources for Unix
|
||||
# unixrt vim-#.#-rt[12].tar.gz Runtime files for Unix
|
||||
# unixsrc vim-#.#-src[12].tar.gz Sources for Unix
|
||||
#
|
||||
# extra vim-#.#-extra.tar.gz Extra source and runtime files
|
||||
# lang vim-#.#-lang.tar.gz multi-language files
|
||||
@@ -66,12 +64,12 @@ all install uninstall tools config configure proto depend lint tags types test t
|
||||
#
|
||||
# All output files are created in the "dist" directory. Existing files are
|
||||
# overwritten!
|
||||
# To do all this you need the unixrt, unixsrc, extra and lang archives, and
|
||||
# To do all this you need the unix, extra and lang archives, and
|
||||
# compiled binaries.
|
||||
# Before creating an archive first delete all backup files, *.orig, etc.
|
||||
|
||||
MAJOR = 6
|
||||
MINOR = 3
|
||||
MAJOR = 7
|
||||
MINOR = 0aa
|
||||
|
||||
# Uncomment this line if the Win32s version is to be included.
|
||||
#DOSBIN_S = dosbin_s
|
||||
@@ -80,10 +78,11 @@ MINOR = 3
|
||||
#
|
||||
# - Update Vim version number. For a test version in: src/version.h, Contents,
|
||||
# MAJOR/MINOR above, VIMRTDIR and VERSION in src/Makefile, README*.txt,
|
||||
# runtime/doc/*.txt and nsis/gvim.nsi. For a minor/major version:
|
||||
# src/GvimExt/GvimExt.reg, src/vim16.def.
|
||||
# runtime/doc/*.txt and nsis/gvim.nsi. Other things in README_os2.txt. For a
|
||||
# minor/major version: src/GvimExt/GvimExt.reg, src/vim.def, src/vim16.def.
|
||||
# - Correct included_patches[] in src/version.c.
|
||||
# - Compile Vim with GTK, Perl, Python, TCL, Ruby, Cscope and "huge" features.
|
||||
# - Compile Vim with GTK, Perl, Python, TCL, Ruby, MZscheme, Cscope and "huge"
|
||||
# features. Exclude workshop and SNiFF.
|
||||
# - With these features: "make proto" (requires cproto and Motif installed;
|
||||
# ignore warnings for missing include files, fix problems for syntax errors).
|
||||
# - With these features: "make depend" (works best with gcc).
|
||||
@@ -125,7 +124,7 @@ MINOR = 3
|
||||
# "uninstald16.exe".
|
||||
# 32 bit DOS version:
|
||||
# - Set environment for compiling with DJGPP; "gmake -f Make_djg.mak".
|
||||
# - "rm testdir/*.out", "make -f Make_djg.mak test" and check the output.
|
||||
# - "rm testdir/*.out", "gmake -f Make_djg.mak test" and check the output.
|
||||
# - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
|
||||
# "uninstald32.exe".
|
||||
# Win32 console version:
|
||||
@@ -262,10 +261,8 @@ dist/$(COMMENT_FARSI): dist/comment
|
||||
dist/$(COMMENT_LANG): dist/comment
|
||||
echo "Vim - Vi IMproved - v$(VDOT) MS-Windows language files" > dist/$(COMMENT_LANG)
|
||||
|
||||
unixrt: dist prepare
|
||||
-rm -f dist/$(VIMVER)-rt1.tar.gz
|
||||
-rm -f dist/$(VIMVER)-rt2.tar.gz
|
||||
# first runtime file
|
||||
unixall: dist prepare
|
||||
-rm -f dist/$(VIMVER).tar.bz2
|
||||
-rm -rf dist/$(VIMRTDIR)
|
||||
mkdir dist/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
@@ -273,36 +270,10 @@ unixrt: dist prepare
|
||||
$(RT_ALL_BIN) \
|
||||
$(RT_UNIX) \
|
||||
$(RT_UNIX_DOS_BIN) \
|
||||
| (cd dist/$(VIMRTDIR); tar xf -)
|
||||
cd dist && tar cf $(VIMVER)-rt1.tar $(VIMRTDIR)
|
||||
gzip -9 dist/$(VIMVER)-rt1.tar
|
||||
# second runtime file (script and language files)
|
||||
-rm -rf dist/$(VIMRTDIR)
|
||||
mkdir dist/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
$(RT_SCRIPTS) \
|
||||
$(LANG_GEN) \
|
||||
$(LANG_GEN_BIN) \
|
||||
| (cd dist/$(VIMRTDIR); tar xf -)
|
||||
cd dist && tar cf $(VIMVER)-rt2.tar $(VIMRTDIR)
|
||||
gzip -9 dist/$(VIMVER)-rt2.tar
|
||||
|
||||
unixsrc: dist prepare
|
||||
-rm -f dist/$(VIMVER)-src1.tar.gz
|
||||
-rm -f dist/$(VIMVER)-src2.tar.gz
|
||||
# first source file
|
||||
-rm -rf dist/$(VIMRTDIR)
|
||||
mkdir dist/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
$(SRC_ALL1) \
|
||||
| (cd dist/$(VIMRTDIR); tar xf -)
|
||||
cd dist && tar cf $(VIMVER)-src1.tar $(VIMRTDIR)
|
||||
gzip -9 dist/$(VIMVER)-src1.tar
|
||||
# second source file
|
||||
-rm -rf dist/$(VIMRTDIR)
|
||||
mkdir dist/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
$(SRC_ALL2) \
|
||||
$(SRC_ALL) \
|
||||
$(SRC_UNIX) \
|
||||
$(SRC_DOS_UNIX) \
|
||||
| (cd dist/$(VIMRTDIR); tar xf -)
|
||||
@@ -310,21 +281,6 @@ unixsrc: dist prepare
|
||||
cp -f src/config.mk.dist dist/$(VIMRTDIR)/src/auto/config.mk
|
||||
# Create an empty config.h file, make dependencies require it
|
||||
touch dist/$(VIMRTDIR)/src/auto/config.h
|
||||
# Make sure configure is newer than config.mk to force it to be generated
|
||||
touch dist/$(VIMRTDIR)/src/configure
|
||||
cd dist && tar cf $(VIMVER)-src2.tar $(VIMRTDIR)
|
||||
gzip -9 dist/$(VIMVER)-src2.tar
|
||||
|
||||
unixall: dist unixsrc unixrt
|
||||
-rm -f dist/$(VIMVER).tar.bz2
|
||||
-rm -rf dist/$(VIMRTDIR)
|
||||
mkdir dist/$(VIMRTDIR)
|
||||
cd dist && tar xfz $(VIMVER)-src1.tar.gz
|
||||
cd dist && tar xfz $(VIMVER)-src2.tar.gz
|
||||
cd dist && tar xfz $(VIMVER)-rt1.tar.gz
|
||||
cd dist && tar xfz $(VIMVER)-rt2.tar.gz
|
||||
# Create an empty config.h file, make dependencies require it
|
||||
touch dist/$(VIMRTDIR)/src/auto/config.h
|
||||
# Make sure configure is newer than config.mk to force it to be generated
|
||||
touch dist/$(VIMRTDIR)/src/configure
|
||||
cd dist && tar cf $(VIMVER).tar $(VIMRTDIR)
|
||||
@@ -405,8 +361,7 @@ amisrc: dist prepare
|
||||
mkdir dist/Vim/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
$(ROOT_AMI) \
|
||||
$(SRC_ALL1) \
|
||||
$(SRC_ALL2) \
|
||||
$(SRC_ALL) \
|
||||
$(SRC_AMI) \
|
||||
$(SRC_AMI_DOS) \
|
||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
||||
@@ -423,12 +378,15 @@ dosrt: dist dist/$(COMMENT_RT) dosrt_unix2dos
|
||||
-rm -rf dist/vim$(VERSION)rt.zip
|
||||
cd dist && zip -9 -rD -z vim$(VERSION)rt.zip vim <$(COMMENT_RT)
|
||||
|
||||
# Split in two parts to avoid a "argument list too long" error.
|
||||
dosrt_unix2dos: dist prepare no_title.vim
|
||||
-rm -rf dist/vim
|
||||
mkdir dist/vim
|
||||
mkdir dist/vim/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
$(RT_ALL) \
|
||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
||||
tar cf - \
|
||||
$(RT_SCRIPTS) \
|
||||
$(RT_DOS) \
|
||||
$(RT_NO_UNIX) \
|
||||
@@ -590,8 +548,7 @@ dossrc: dist no_title.vim dist/$(COMMENT_SRC) runtime/doc/uganda.nsis.txt
|
||||
mkdir dist/vim
|
||||
mkdir dist/vim/$(VIMRTDIR)
|
||||
tar cf - \
|
||||
$(SRC_ALL1) \
|
||||
$(SRC_ALL2) \
|
||||
$(SRC_ALL) \
|
||||
$(SRC_DOS) \
|
||||
$(SRC_AMI_DOS) \
|
||||
$(SRC_DOS_UNIX) \
|
||||
|
||||
@@ -5,28 +5,28 @@ See "README.txt" for general information about Vim.
|
||||
|
||||
|
||||
NOTE: You will need two archives:
|
||||
vim62rt.zip contains the runtime files (same as for the PC version)
|
||||
vim62os2.zip contains the OS/2 executables
|
||||
vim70rt.zip contains the runtime files (same as for the PC version)
|
||||
vim70os2.zip contains the OS/2 executables
|
||||
|
||||
1. Go to the directory where you want to put the Vim files. Examples:
|
||||
cd C:\
|
||||
cd D:\editors
|
||||
|
||||
2. Unpack the zip archives. This will create a new directory "vim/vim62",
|
||||
2. Unpack the zip archives. This will create a new directory "vim/vim70",
|
||||
in which all the distributed Vim files are placed. Since the directory
|
||||
name includes the version number, it is unlikely that you overwrite
|
||||
existing files.
|
||||
Examples:
|
||||
pkunzip -d vim62os2.zip
|
||||
unzip vim62os2.zip
|
||||
pkunzip -d vim70os2.zip
|
||||
unzip vim70os2.zip
|
||||
|
||||
After you unpacked the files, you can still move the whole directory tree
|
||||
to another location.
|
||||
|
||||
3. Add the directory where vim.exe is to your path. The simplest is to add a
|
||||
line to your autoexec.bat. Examples:
|
||||
set path=%path%;C:\vim\vim62
|
||||
set path=%path%;D:\editors\vim\vim62
|
||||
set path=%path%;C:\vim\vim70
|
||||
set path=%path%;D:\editors\vim\vim70
|
||||
|
||||
That's it!
|
||||
|
||||
@@ -41,10 +41,10 @@ Extra remarks:
|
||||
C:\vim\_viminfo Dynamic info for 'viminfo'.
|
||||
C:\vim\... Other files you made.
|
||||
Distributed files:
|
||||
C:\vim\vim62\vim.exe The Vim version 6.2 executable.
|
||||
C:\vim\vim62\doc\*.txt The version 6.2 documentation files.
|
||||
C:\vim\vim62\bugreport.vim A Vim version 6.2 script.
|
||||
C:\vim\vim62\... Other version 6.2 distributed files.
|
||||
C:\vim\vim70\vim.exe The Vim version 7.0 executable.
|
||||
C:\vim\vim70\doc\*.txt The version 7.0 documentation files.
|
||||
C:\vim\vim70\bugreport.vim A Vim version 7.0 script.
|
||||
C:\vim\vim70\... Other version 7.0 distributed files.
|
||||
In this case the $VIM environment variable would be set like this:
|
||||
set VIM=C:\vim
|
||||
|
||||
|
||||
@@ -4,3 +4,12 @@ These are functions used by plugins and for general use. They will be loaded
|
||||
automatically when the function is invoked. See ":help autoload".
|
||||
|
||||
gzip.vim for editing compressed files
|
||||
netrw.vim browsing (remote) directories and editing remote files
|
||||
tar.vim browsing tar files
|
||||
zip.vim browsing zip files
|
||||
|
||||
Occult completion files:
|
||||
ccomplete.vim C
|
||||
csscomplete.vim HTML / CSS
|
||||
htmlcomplete.vim HTML
|
||||
|
||||
|
||||
@@ -1,147 +1,422 @@
|
||||
" Vim completion script
|
||||
" Language: C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Sep 07
|
||||
" Last Change: 2006 Feb 10
|
||||
|
||||
|
||||
" This function is used for the 'omnifunc' option.
|
||||
function! ccomplete#Complete(findstart, base)
|
||||
if a:findstart
|
||||
" Locate the start of the item, including "." and "->".
|
||||
" Locate the start of the item, including ".", "->" and "[...]".
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let lastword = -1
|
||||
while start > 0
|
||||
if line[start - 1] =~ '\w\|\.'
|
||||
if line[start - 1] =~ '\w'
|
||||
let start -= 1
|
||||
elseif line[start - 1] =~ '\.'
|
||||
if lastword == -1
|
||||
let lastword = start
|
||||
endif
|
||||
let start -= 1
|
||||
elseif start > 1 && line[start - 2] == '-' && line[start - 1] == '>'
|
||||
if lastword == -1
|
||||
let lastword = start
|
||||
endif
|
||||
let start -= 2
|
||||
elseif line[start - 1] == ']'
|
||||
" Skip over [...].
|
||||
let n = 0
|
||||
let start -= 1
|
||||
while start > 0
|
||||
let start -= 1
|
||||
if line[start] == '['
|
||||
if n == 0
|
||||
break
|
||||
endif
|
||||
let n -= 1
|
||||
elseif line[start] == ']' " nested []
|
||||
let n += 1
|
||||
endif
|
||||
endwhile
|
||||
else
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
return start
|
||||
|
||||
" Return the column of the last word, which is going to be changed.
|
||||
" Remember the text that comes before it in s:prepended.
|
||||
if lastword == -1
|
||||
let s:prepended = ''
|
||||
return start
|
||||
endif
|
||||
let s:prepended = strpart(line, start, lastword - start)
|
||||
return lastword
|
||||
endif
|
||||
|
||||
" Return list of matches.
|
||||
|
||||
" Split item in words, keep empty word after "." or "->".
|
||||
" "aa" -> ['aa'], "aa." -> ['aa', ''], "aa.bb" -> ['aa', 'bb'], etc.
|
||||
let items = split(a:base, '\.\|->', 1)
|
||||
if len(items) <= 1
|
||||
" Only one part, no "." or "->": complete from tags file.
|
||||
" When local completion is wanted CTRL-N would have been used.
|
||||
return map(taglist('^' . a:base), 'v:val["name"]')
|
||||
let base = s:prepended . a:base
|
||||
|
||||
" Don't do anything for an empty base, would result in all the tags in the
|
||||
" tags file.
|
||||
if base == ''
|
||||
return []
|
||||
endif
|
||||
|
||||
let basetext = matchstr(a:base, '.*\(\.\|->\)')
|
||||
" Split item in words, keep empty word after "." or "->".
|
||||
" "aa" -> ['aa'], "aa." -> ['aa', ''], "aa.bb" -> ['aa', 'bb'], etc.
|
||||
" We can't use split, because we need to skip nested [...].
|
||||
let items = []
|
||||
let s = 0
|
||||
while 1
|
||||
let e = match(base, '\.\|->\|\[', s)
|
||||
if e < 0
|
||||
if s == 0 || base[s - 1] != ']'
|
||||
call add(items, strpart(base, s))
|
||||
endif
|
||||
break
|
||||
endif
|
||||
if s == 0 || base[s - 1] != ']'
|
||||
call add(items, strpart(base, s, e - s))
|
||||
endif
|
||||
if base[e] == '.'
|
||||
let s = e + 1 " skip over '.'
|
||||
elseif base[e] == '-'
|
||||
let s = e + 2 " skip over '->'
|
||||
else
|
||||
" Skip over [...].
|
||||
let n = 0
|
||||
let s = e
|
||||
let e += 1
|
||||
while e < len(base)
|
||||
if base[e] == ']'
|
||||
if n == 0
|
||||
break
|
||||
endif
|
||||
let n -= 1
|
||||
elseif base[e] == '[' " nested [...]
|
||||
let n += 1
|
||||
endif
|
||||
let e += 1
|
||||
endwhile
|
||||
let e += 1
|
||||
call add(items, strpart(base, s, e - s))
|
||||
let s = e
|
||||
endif
|
||||
endwhile
|
||||
|
||||
" Find variable locally in current function, current file or tags file.
|
||||
if searchdecl(items[0]) == 0 || searchdecl(items[0], 1) == 0
|
||||
" Find the variable items[0].
|
||||
" 1. in current function (like with "gd")
|
||||
" 2. in tags file(s) (like with ":tag")
|
||||
" 3. in current file (like with "gD")
|
||||
let res = []
|
||||
if searchdecl(items[0], 0, 1) == 0
|
||||
" Found, now figure out the type.
|
||||
" TODO: join previous line if it makes sense
|
||||
let line = getline('.')
|
||||
let col = col('.')
|
||||
let res = ccomplete#Nextitem(strpart(line, 0, col), items[1:], basetext)
|
||||
else
|
||||
" Find the variable in the tags file
|
||||
if len(items) == 1
|
||||
" Completing one word and it's a local variable: May add '[', '.' or
|
||||
" '->'.
|
||||
let match = items[0]
|
||||
if match(line, match . '\s*\[') > 0
|
||||
let match .= '['
|
||||
else
|
||||
let res = s:Nextitem(strpart(line, 0, col), [''], 0)
|
||||
if len(res) > 0
|
||||
" There are members, thus add "." or "->".
|
||||
if match(line, '\*[ \t(]*' . match . '\>') > 0
|
||||
let match .= '->'
|
||||
else
|
||||
let match .= '.'
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
let res = [{'match': match, 'tagline' : ''}]
|
||||
else
|
||||
" Completing "var.", "var.something", etc.
|
||||
let res = s:Nextitem(strpart(line, 0, col), items[1:], 0)
|
||||
endif
|
||||
endif
|
||||
|
||||
if len(items) == 1
|
||||
" Only one part, no "." or "->": complete from tags file.
|
||||
call extend(res, map(taglist('^' . base), 's:Tag2item(v:val)'))
|
||||
endif
|
||||
|
||||
if len(res) == 0
|
||||
" Find the variable in the tags file(s)
|
||||
let diclist = taglist('^' . items[0] . '$')
|
||||
|
||||
let res = []
|
||||
for i in range(len(diclist))
|
||||
" For now we only recognize a variable.
|
||||
" The command in the tags file must be a search pattern that shows the
|
||||
" declaration of the variable.
|
||||
" New ctags has the "typename" field.
|
||||
if has_key(diclist[i], 'typename')
|
||||
call extend(res, s:StructMembers(diclist[i]['typename'], items[1:]))
|
||||
endif
|
||||
|
||||
" For a variable use the command, which must be a search pattern that
|
||||
" shows the declaration of the variable.
|
||||
if diclist[i]['kind'] == 'v'
|
||||
let line = diclist[i]['cmd']
|
||||
if line[0] == '/' && line[1] == '^'
|
||||
let line = strpart(line, 2) " Remove /^ from the cmd
|
||||
let col = match(line, items[0])
|
||||
call extend(res, ccomplete#Nextitem(strpart(line, 0, col), items[1:], basetext)
|
||||
let col = match(line, '\<' . items[0] . '\>')
|
||||
call extend(res, s:Nextitem(strpart(line, 2, col - 2), items[1:], 0))
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
return res
|
||||
if len(res) == 0 && searchdecl(items[0], 1) == 0
|
||||
" Found, now figure out the type.
|
||||
" TODO: join previous line if it makes sense
|
||||
let line = getline('.')
|
||||
let col = col('.')
|
||||
let res = s:Nextitem(strpart(line, 0, col), items[1:], 0)
|
||||
endif
|
||||
|
||||
" If the last item(s) are [...] they need to be added to the matches.
|
||||
let last = len(items) - 1
|
||||
let brackets = ''
|
||||
while last >= 0
|
||||
if items[last][0] != '['
|
||||
break
|
||||
endif
|
||||
let brackets = items[last] . brackets
|
||||
let last -= 1
|
||||
endwhile
|
||||
|
||||
return map(res, 's:Tagline2item(v:val, brackets)')
|
||||
endfunc
|
||||
|
||||
function! ccomplete#Nextitem(lead, items, basetext)
|
||||
function! s:GetAddition(line, match, memarg, bracket)
|
||||
" Guess if the item is an array.
|
||||
if a:bracket && match(a:line, a:match . '\s*\[') > 0
|
||||
return '['
|
||||
endif
|
||||
|
||||
" Check if the item has members.
|
||||
if len(s:SearchMembers(a:memarg, [''])) > 0
|
||||
" If there is a '*' before the name use "->".
|
||||
if match(a:line, '\*[ \t(]*' . a:match . '\>') > 0
|
||||
return '->'
|
||||
else
|
||||
return '.'
|
||||
endif
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
" Turn the tag info "val" into an item for completion.
|
||||
" "val" is is an item in the list returned by taglist().
|
||||
" If it is a variable we may add "." or "->". Don't do it for other types,
|
||||
" such as a typedef, by not including the info that s:GetAddition() uses.
|
||||
function! s:Tag2item(val)
|
||||
let x = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
|
||||
|
||||
if has_key(a:val, "kind")
|
||||
if a:val["kind"] == 'v'
|
||||
return {'match': a:val['name'], 'tagline': "\t" . a:val['cmd'], 'dict': a:val, 'extra': x}
|
||||
endif
|
||||
if a:val["kind"] == 'f'
|
||||
return {'match': a:val['name'] . '(', 'tagline': "", 'extra': x}
|
||||
endif
|
||||
endif
|
||||
return {'match': a:val['name'], 'tagline': '', 'extra': x}
|
||||
endfunction
|
||||
|
||||
" Turn a match item "val" into an item for completion.
|
||||
" "val['match']" is the matching item.
|
||||
" "val['tagline']" is the tagline in which the last part was found.
|
||||
function! s:Tagline2item(val, brackets)
|
||||
let line = a:val['tagline']
|
||||
let word = a:val['match'] . a:brackets . s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
|
||||
if has_key(a:val, 'extra')
|
||||
return {'word': word, 'menu': a:val['extra']}
|
||||
endif
|
||||
|
||||
" Isolate the command after the tag and filename.
|
||||
let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)')
|
||||
if s != ''
|
||||
return {'word': word, 'menu': s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))}
|
||||
endif
|
||||
return {'word': word}
|
||||
endfunction
|
||||
|
||||
" Turn a command from a tag line to something that is useful in the menu
|
||||
function! s:Tagcmd2extra(cmd, name, fname)
|
||||
if a:cmd =~ '^/^'
|
||||
" The command is a search command, useful to see what it is.
|
||||
let x = matchstr(a:cmd, '^/^\zs.*\ze$/')
|
||||
let x = substitute(x, a:name, '@@', '')
|
||||
let x = substitute(x, '\\\(.\)', '\1', 'g')
|
||||
let x = x . ' - ' . a:fname
|
||||
elseif a:cmd =~ '^\d*$'
|
||||
" The command is a line number, the file name is more useful.
|
||||
let x = a:fname . ' - ' . a:cmd
|
||||
else
|
||||
" Not recognized, use command and file name.
|
||||
let x = a:cmd . ' - ' . a:fname
|
||||
endif
|
||||
return x
|
||||
endfunction
|
||||
|
||||
" Find composing type in "lead" and match items[0] with it.
|
||||
" Repeat this recursively for items[1], if it's there.
|
||||
" When resolving typedefs "depth" is used to avoid infinite recursion.
|
||||
" Return the list of matches.
|
||||
function! s:Nextitem(lead, items, depth)
|
||||
|
||||
" Use the text up to the variable name and split it in tokens.
|
||||
let tokens = split(a:lead, '\s\+\|\<')
|
||||
|
||||
" Try to recognize the type of the variable. This is rough guessing...
|
||||
let members = []
|
||||
let taglines = []
|
||||
let res = []
|
||||
for tidx in range(len(tokens))
|
||||
|
||||
" Recognize 'struct foobar'.
|
||||
if tokens[tidx] == 'struct' && tidx + 1 < len(tokens)
|
||||
let [members, taglines] = ccomplete#StructMembers(tokens[tidx + 1], a:items[0])
|
||||
" Recognize "struct foobar" and "union foobar".
|
||||
if (tokens[tidx] == 'struct' || tokens[tidx] == 'union') && tidx + 1 < len(tokens)
|
||||
let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items)
|
||||
break
|
||||
endif
|
||||
|
||||
" Recognize a typedef: 'foobar_t'.
|
||||
" TODO: add more reserved words
|
||||
if index(['int', 'short', 'char', 'float', 'double', 'static', 'unsigned', 'extern'], tokens[tidx]) >= 0
|
||||
continue
|
||||
endif
|
||||
|
||||
" Use the tags file to find out if this is a typedef.
|
||||
let diclist = taglist('^' . tokens[tidx] . '$')
|
||||
for i in range(len(diclist))
|
||||
" For now we only recognize "typedef struct foobar".
|
||||
" The command in the tags file must be a search pattern that shows the
|
||||
" typedef.
|
||||
let cmd = diclist[i]['cmd']
|
||||
let ci = matchend(cmd, 'typedef\s\+struct\s\+')
|
||||
if ci > 1
|
||||
let name = matchstr(cmd, '\w*', ci)
|
||||
let [m, l] = ccomplete#StructMembers(name, a:items[0])
|
||||
call extend(members, m)
|
||||
call extend(taglines, l)
|
||||
for tagidx in range(len(diclist))
|
||||
" New ctags has the "typename" field.
|
||||
if has_key(diclist[tagidx], 'typename')
|
||||
call extend(res, s:StructMembers(diclist[tagidx]['typename'], a:items))
|
||||
continue
|
||||
endif
|
||||
endfor
|
||||
if len(members) > 0
|
||||
break
|
||||
endif
|
||||
|
||||
endfor
|
||||
" Only handle typedefs here.
|
||||
if diclist[tagidx]['kind'] != 't'
|
||||
continue
|
||||
endif
|
||||
|
||||
if len(members) > 0
|
||||
if len(a:items) == 1
|
||||
return map(members, 'a:basetext . v:val')
|
||||
endif
|
||||
|
||||
" More items following. For each of the possible members find the
|
||||
" matching following members.
|
||||
let res = []
|
||||
for i in range(len(members))
|
||||
let line = taglines[i]
|
||||
let memb = members[i]
|
||||
let s = match(line, '\t\zs/^')
|
||||
if s > 0
|
||||
let e = match(line, members[i], s)
|
||||
if e > 0
|
||||
call extend(res, ccomplete#Nextitem(strpart(line, s, e - s), a:items[1:], a:basetext))
|
||||
" For old ctags we recognize "typedef struct aaa" and
|
||||
" "typedef union bbb" in the tags file command.
|
||||
let cmd = diclist[tagidx]['cmd']
|
||||
let ei = matchend(cmd, 'typedef\s\+')
|
||||
if ei > 1
|
||||
let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<')
|
||||
if len(cmdtokens) > 1
|
||||
if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union'
|
||||
let name = ''
|
||||
" Use the first identifier after the "struct" or "union"
|
||||
for ti in range(len(cmdtokens) - 1)
|
||||
if cmdtokens[ti] =~ '^\w'
|
||||
let name = cmdtokens[ti]
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
if name != ''
|
||||
call extend(res, s:StructMembers(cmdtokens[0] . ':' . name, a:items))
|
||||
endif
|
||||
elseif a:depth < 10
|
||||
" Could be "typedef other_T some_T".
|
||||
call extend(res, s:Nextitem(cmdtokens[0], a:items, a:depth + 1))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
return res
|
||||
if len(res) > 0
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res
|
||||
endfunction
|
||||
|
||||
|
||||
" Search for members of structure "typename" in tags files.
|
||||
" Return a list with resulting matches.
|
||||
" Each match is a dictionary with "match" and "tagline" entries.
|
||||
function! s:StructMembers(typename, items)
|
||||
" Todo: What about local structures?
|
||||
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
|
||||
if fnames == ''
|
||||
return []
|
||||
endif
|
||||
|
||||
let typename = a:typename
|
||||
let qflist = []
|
||||
while 1
|
||||
exe 'silent! vimgrep /\t' . typename . '\(\t\|$\)/j ' . fnames
|
||||
let qflist = getqflist()
|
||||
if len(qflist) > 0 || match(typename, "::") < 0
|
||||
break
|
||||
endif
|
||||
" No match for "struct:context::name", remove "context::" and try again.
|
||||
let typename = substitute(typename, ':[^:]*::', ':', '')
|
||||
endwhile
|
||||
|
||||
let matches = []
|
||||
for l in qflist
|
||||
let memb = matchstr(l['text'], '[^\t]*')
|
||||
if memb =~ '^' . a:items[0]
|
||||
call add(matches, {'match': memb, 'tagline': l['text']})
|
||||
endif
|
||||
endfor
|
||||
|
||||
if len(matches) > 0
|
||||
" Skip over [...] items
|
||||
let idx = 1
|
||||
while 1
|
||||
if idx >= len(a:items)
|
||||
return matches " No further items, return the result.
|
||||
endif
|
||||
if a:items[idx][0] != '['
|
||||
break
|
||||
endif
|
||||
let idx += 1
|
||||
endwhile
|
||||
|
||||
" More items following. For each of the possible members find the
|
||||
" matching following members.
|
||||
return s:SearchMembers(matches, a:items[idx :])
|
||||
endif
|
||||
|
||||
" Failed to find anything.
|
||||
return []
|
||||
endfunction
|
||||
|
||||
|
||||
" Return a list with two lists:
|
||||
" - a list of members of structure "name" starting with string "item".
|
||||
" - a list of the tag lines where the member is defined.
|
||||
function! ccomplete#StructMembers(name, item)
|
||||
" Todo: Use all tags files; What about local structures?
|
||||
exe 'vimgrep /\<struct:' . a:name . '\>/j tags'
|
||||
|
||||
let members = []
|
||||
let taglines = []
|
||||
for l in getqflist()
|
||||
let memb = matchstr(l['text'], '[^\t]*')
|
||||
if memb =~ '^' . a:item
|
||||
call add(members, memb)
|
||||
call add(taglines, l['text'])
|
||||
" For matching members, find matches for following items.
|
||||
function! s:SearchMembers(matches, items)
|
||||
let res = []
|
||||
for i in range(len(a:matches))
|
||||
let typename = ''
|
||||
if has_key(a:matches[i], 'dict')
|
||||
if has_key(a:matches[i].dict, 'typename')
|
||||
let typename = a:matches[i].dict['typename']
|
||||
endif
|
||||
let line = "\t" . a:matches[i].dict['cmd']
|
||||
else
|
||||
let line = a:matches[i]['tagline']
|
||||
let e = matchend(line, '\ttypename:')
|
||||
if e > 0
|
||||
" Use typename field
|
||||
let typename = matchstr(line, '[^\t]*', e)
|
||||
endif
|
||||
endif
|
||||
if typename != ''
|
||||
call extend(res, s:StructMembers(typename, a:items))
|
||||
else
|
||||
" Use the search command (the declaration itself).
|
||||
let s = match(line, '\t\zs/^')
|
||||
if s > 0
|
||||
let e = match(line, '\<' . a:matches[i]['match'] . '\>', s)
|
||||
if e > 0
|
||||
call extend(res, s:Nextitem(strpart(line, s, e - s), a:items, 0))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
return [members, taglines]
|
||||
endfunction
|
||||
return res
|
||||
endfunc
|
||||
|
||||
430
runtime/autoload/csscomplete.vim
Normal file
430
runtime/autoload/csscomplete.vim
Normal file
@@ -0,0 +1,430 @@
|
||||
" Vim completion script
|
||||
" Language: CSS 2.1
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2005 Oct 12
|
||||
|
||||
function! csscomplete#CompleteCSS(findstart, base)
|
||||
if a:findstart
|
||||
" We need whole line to proper checking
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let compl_begin = col('.') - 2
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
let b:compl_context = getline('.')[0:compl_begin]
|
||||
return start
|
||||
else
|
||||
" There are few chars important for context:
|
||||
" ^ ; : { } /* */
|
||||
" Where ^ is start of line and /* */ are comment borders
|
||||
" Depending on their relative position to cursor we will now what should
|
||||
" be completed.
|
||||
" 1. if nearest are ^ or { or ; current word is property
|
||||
" 2. if : it is value (with exception of pseudo things)
|
||||
" 3. if } we are outside of css definitions
|
||||
" 4. for comments ignoring is be the easiest but assume they are the same
|
||||
" as 1.
|
||||
" 5. if @ complete at-rule
|
||||
" 6. if ! complete important
|
||||
if exists("b:compl_context")
|
||||
let line = b:compl_context
|
||||
unlet! b:compl_context
|
||||
else
|
||||
let line = a:base
|
||||
endif
|
||||
|
||||
let res = []
|
||||
let res2 = []
|
||||
let borders = {}
|
||||
|
||||
" We need the last occurrence of char so reverse line
|
||||
let revline = join(reverse(split(line, '.\zs')), '')
|
||||
|
||||
let openbrace = stridx(revline, '{')
|
||||
let closebrace = stridx(revline, '}')
|
||||
let colon = stridx(revline, ':')
|
||||
let semicolon = stridx(revline, ';')
|
||||
let opencomm = stridx(revline, '*/') " Line was reversed
|
||||
let closecomm = stridx(revline, '/*') " Line was reversed
|
||||
let style = stridx(revline, '=\s*elyts') " Line was reversed
|
||||
let atrule = stridx(revline, '@')
|
||||
let exclam = stridx(revline, '!')
|
||||
|
||||
if openbrace > -1
|
||||
let borders[openbrace] = "openbrace"
|
||||
endif
|
||||
if closebrace > -1
|
||||
let borders[closebrace] = "closebrace"
|
||||
endif
|
||||
if colon > -1
|
||||
let borders[colon] = "colon"
|
||||
endif
|
||||
if semicolon > -1
|
||||
let borders[semicolon] = "semicolon"
|
||||
endif
|
||||
if opencomm > -1
|
||||
let borders[opencomm] = "opencomm"
|
||||
endif
|
||||
if closecomm > -1
|
||||
let borders[closecomm] = "closecomm"
|
||||
endif
|
||||
if style > -1
|
||||
let borders[style] = "style"
|
||||
endif
|
||||
if atrule > -1
|
||||
let borders[atrule] = "atrule"
|
||||
endif
|
||||
if exclam > -1
|
||||
let borders[exclam] = "exclam"
|
||||
endif
|
||||
|
||||
|
||||
if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
|
||||
" Complete properties
|
||||
|
||||
let values = split("azimuth background background-attachment background-color background-image background-position background-repeat border bottom border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width caption-side clear clip color content counter-increment counter-reset cue cue-after cue-before cursor display direction elevation empty-cells float font font-family font-size font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-right margin-left margin-top margin-bottom max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes right richness speak speak-header speak-numeral speak-punctuation speech-rate stress table-layout text-align text-decoration text-indent text-transform top unicode-bidi vertical-align visibility voice-family volume white-space width widows word-spacing z-index")
|
||||
|
||||
let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$')
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.entered_property
|
||||
call add(res, m . ':')
|
||||
elseif m =~? entered_property
|
||||
call add(res2, m . ':')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
elseif borders[min(keys(borders))] == 'colon'
|
||||
" Get name of property
|
||||
let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$'))
|
||||
|
||||
if prop == 'azimuth'
|
||||
let values = ["left-side", "far-left", "left", "center-left", "center", "center-right", "right", "far-right", "right-side", "behind", "leftwards", "rightwards"]
|
||||
elseif prop == 'background-attachment'
|
||||
let values = ["scroll", "fixed"]
|
||||
elseif prop == 'background-color'
|
||||
let values = ["transparent", "rgb(", "#"]
|
||||
elseif prop == 'background-image'
|
||||
let values = ["url(", "none"]
|
||||
elseif prop == 'background-position'
|
||||
let vals = matchstr(line, '.*:\s*\zs.*')
|
||||
if vals =~ '^\([a-zA-Z]\+\)\?$'
|
||||
let values = ["top", "center", "bottom"]
|
||||
elseif vals =~ '^[a-zA-Z]\+\s\+\([a-zA-Z]\+\)\?$'
|
||||
let values = ["left", "center", "right"]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
elseif prop == 'background-repeat'
|
||||
let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"]
|
||||
elseif prop == 'background'
|
||||
let values = ["url(", "scroll", "fixed", "transparent", "rgb(", "#", "none", "top", "center", "bottom" , "left", "right", "repeat", "repeat-x", "repeat-y", "no-repeat"]
|
||||
elseif prop == 'border-collapse'
|
||||
let values = ["collapse", "separate"]
|
||||
elseif prop == 'border-color'
|
||||
let values = ["rgb(", "#", "transparent"]
|
||||
elseif prop == 'border-spacing'
|
||||
return []
|
||||
elseif prop == 'border-style'
|
||||
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
|
||||
elseif prop =~ 'border-\(top\|right\|bottom\|left\)$'
|
||||
let vals = matchstr(line, '.*:\s*\zs.*')
|
||||
if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
|
||||
let values = ["thin", "thick", "medium"]
|
||||
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
|
||||
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
|
||||
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
|
||||
let values = ["rgb(", "#", "transparent"]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-color'
|
||||
let values = ["rgb(", "#", "transparent"]
|
||||
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-style'
|
||||
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
|
||||
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-width'
|
||||
let values = ["thin", "thick", "medium"]
|
||||
elseif prop == 'border-width'
|
||||
let values = ["thin", "thick", "medium"]
|
||||
elseif prop == 'border'
|
||||
let vals = matchstr(line, '.*:\s*\zs.*')
|
||||
if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
|
||||
let values = ["thin", "thick", "medium"]
|
||||
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
|
||||
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
|
||||
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
|
||||
let values = ["rgb(", "#", "transparent"]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
elseif prop == 'bottom'
|
||||
let values = ["auto"]
|
||||
elseif prop == 'caption-side'
|
||||
let values = ["top", "bottom"]
|
||||
elseif prop == 'clear'
|
||||
let values = ["none", "left", "right", "both"]
|
||||
elseif prop == 'clip'
|
||||
let values = ["auto", "rect("]
|
||||
elseif prop == 'color'
|
||||
let values = ["rgb(", "#"]
|
||||
elseif prop == 'content'
|
||||
let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"]
|
||||
elseif prop =~ 'counter-\(increment\|reset\)$'
|
||||
let values = ["none"]
|
||||
elseif prop =~ '^\(cue-after\|cue-before\|cue\)$'
|
||||
let values = ["url(", "none"]
|
||||
elseif prop == 'cursor'
|
||||
let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"]
|
||||
elseif prop == 'direction'
|
||||
let values = ["ltr", "rtl"]
|
||||
elseif prop == 'display'
|
||||
let values = ["inline", "block", "list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"]
|
||||
elseif prop == 'elevation'
|
||||
let values = ["below", "level", "above", "higher", "lower"]
|
||||
elseif prop == 'empty-cells'
|
||||
let values = ["show", "hide"]
|
||||
elseif prop == 'float'
|
||||
let values = ["left", "right", "none"]
|
||||
elseif prop == 'font-family'
|
||||
let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]
|
||||
elseif prop == 'font-size'
|
||||
let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"]
|
||||
elseif prop == 'font-style'
|
||||
let values = ["normal", "italic", "oblique"]
|
||||
elseif prop == 'font-variant'
|
||||
let values = ["normal", "small-caps"]
|
||||
elseif prop == 'font-weight'
|
||||
let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"]
|
||||
elseif prop == 'font'
|
||||
let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"]
|
||||
elseif prop =~ '^\(height\|width\)$'
|
||||
let values = ["auto"]
|
||||
elseif prop =~ '^\(left\|rigth\)$'
|
||||
let values = ["auto"]
|
||||
elseif prop == 'letter-spacing'
|
||||
let values = ["normal"]
|
||||
elseif prop == 'line-height'
|
||||
let values = ["normal"]
|
||||
elseif prop == 'list-style-image'
|
||||
let values = ["url(", "none"]
|
||||
elseif prop == 'list-style-position'
|
||||
let values = ["inside", "outside"]
|
||||
elseif prop == 'list-style-type'
|
||||
let values = ["disc", "circle", "square", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin", "none"]
|
||||
elseif prop == 'list-style'
|
||||
return []
|
||||
elseif prop == 'margin'
|
||||
let values = ["auto"]
|
||||
elseif prop =~ 'margin-\(right\|left\|top\|bottom\)$'
|
||||
let values = ["auto"]
|
||||
elseif prop == 'max-height'
|
||||
let values = ["auto"]
|
||||
elseif prop == 'max-width'
|
||||
let values = ["none"]
|
||||
elseif prop == 'min-height'
|
||||
let values = ["none"]
|
||||
elseif prop == 'min-width'
|
||||
let values = ["none"]
|
||||
elseif prop == 'orphans'
|
||||
return []
|
||||
elseif prop == 'outline-color'
|
||||
let values = ["rgb(", "#"]
|
||||
elseif prop == 'outline-style'
|
||||
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
|
||||
elseif prop == 'outline-width'
|
||||
let values = ["thin", "thick", "medium"]
|
||||
elseif prop == 'outline'
|
||||
let vals = matchstr(line, '.*:\s*\zs.*')
|
||||
if vals =~ '^\([a-zA-Z0-9,()#]\+\)\?$'
|
||||
let values = ["rgb(", "#"]
|
||||
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\([a-zA-Z]\+\)\?$'
|
||||
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
|
||||
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
|
||||
let values = ["thin", "thick", "medium"]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
elseif prop == 'overflow'
|
||||
let values = ["visible", "hidden", "scroll", "auto"]
|
||||
elseif prop == 'padding'
|
||||
return []
|
||||
elseif prop =~ 'padding-\(top\|right\|bottom\|left\)$'
|
||||
return []
|
||||
elseif prop =~ 'page-break-\(after\|before\)$'
|
||||
let values = ["auto", "always", "avoid", "left", "right"]
|
||||
elseif prop == 'page-break-inside'
|
||||
let values = ["auto", "avoid"]
|
||||
elseif prop =~ 'pause-\(after\|before\)$'
|
||||
return []
|
||||
elseif prop == 'pause'
|
||||
return []
|
||||
elseif prop == 'pitch-range'
|
||||
return []
|
||||
elseif prop == 'pitch'
|
||||
let values = ["x-low", "low", "medium", "high", "x-high"]
|
||||
elseif prop == 'play-during'
|
||||
let values = ["url(", "mix", "repeat", "auto", "none"]
|
||||
elseif prop == 'position'
|
||||
let values = ["static", "relative", "absolute", "fixed"]
|
||||
elseif prop == 'quotes'
|
||||
let values = ["none"]
|
||||
elseif prop == 'richness'
|
||||
return []
|
||||
elseif prop == 'speak-header'
|
||||
let values = ["once", "always"]
|
||||
elseif prop == 'speak-numeral'
|
||||
let values = ["digits", "continuous"]
|
||||
elseif prop == 'speak-punctuation'
|
||||
let values = ["code", "none"]
|
||||
elseif prop == 'speak'
|
||||
let values = ["normal", "none", "spell-out"]
|
||||
elseif prop == 'speech-rate'
|
||||
let values = ["x-slow", "slow", "medium", "fast", "x-fast", "faster", "slower"]
|
||||
elseif prop == 'stress'
|
||||
return []
|
||||
elseif prop == 'table-layout'
|
||||
let values = ["auto", "fixed"]
|
||||
elseif prop == 'text-align'
|
||||
let values = ["left", "right", "center", "justify"]
|
||||
elseif prop == 'text-decoration'
|
||||
let values = ["none", "underline", "overline", "line-through", "blink"]
|
||||
elseif prop == 'text-indent'
|
||||
return []
|
||||
elseif prop == 'text-transform'
|
||||
let values = ["capitalize", "uppercase", "lowercase", "none"]
|
||||
elseif prop == 'top'
|
||||
let values = ["auto"]
|
||||
elseif prop == 'unicode-bidi'
|
||||
let values = ["normal", "embed", "bidi-override"]
|
||||
elseif prop == 'vertical-align'
|
||||
let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"]
|
||||
elseif prop == 'visibility'
|
||||
let values = ["visible", "hidden", "collapse"]
|
||||
elseif prop == 'voice-family'
|
||||
return []
|
||||
elseif prop == 'volume'
|
||||
let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"]
|
||||
elseif prop == 'white-space'
|
||||
let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"]
|
||||
elseif prop == 'widows'
|
||||
return []
|
||||
elseif prop == 'word-spacing'
|
||||
let values = ["normal"]
|
||||
elseif prop == 'z-index'
|
||||
let values = ["auto"]
|
||||
else
|
||||
" If no property match it is possible we are outside of {} and
|
||||
" trying to complete pseudo-(class|element)
|
||||
let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$'))
|
||||
if ",a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var," =~ ','.element.','
|
||||
let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
|
||||
" Complete values
|
||||
let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$')
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.entered_value
|
||||
call add(res, m)
|
||||
elseif m =~? entered_value
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
elseif borders[min(keys(borders))] == 'closebrace'
|
||||
|
||||
return []
|
||||
|
||||
elseif borders[min(keys(borders))] == 'exclam'
|
||||
|
||||
" Complete values
|
||||
let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
|
||||
|
||||
let values = ["important"]
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.entered_imp
|
||||
call add(res, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res
|
||||
|
||||
elseif borders[min(keys(borders))] == 'atrule'
|
||||
|
||||
let afterat = matchstr(line, '.*@\zs.*')
|
||||
|
||||
if afterat =~ '\s'
|
||||
|
||||
let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze')
|
||||
|
||||
if atrulename == 'media'
|
||||
let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
|
||||
|
||||
let atruleafterbase = matchstr(line, '.*@media\s\+\ze.*$')
|
||||
let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$')
|
||||
|
||||
elseif atrulename == 'import'
|
||||
let atruleafterbase = matchstr(line, '.*@import\s\+\ze.*$')
|
||||
let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$')
|
||||
|
||||
if entered_atruleafter =~ "^[\"']"
|
||||
let filestart = matchstr(entered_atruleafter, '^.\zs.*')
|
||||
let files = split(glob(filestart.'*'), '\n')
|
||||
let values = map(copy(files), '"\"".v:val')
|
||||
|
||||
elseif entered_atruleafter =~ "^url("
|
||||
let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*")
|
||||
let files = split(glob(filestart.'*'), '\n')
|
||||
let values = map(copy(files), '"url(".v:val')
|
||||
|
||||
else
|
||||
let values = ['"', 'url(']
|
||||
|
||||
endif
|
||||
|
||||
else
|
||||
return []
|
||||
|
||||
endif
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.entered_atruleafter
|
||||
call add(res, m)
|
||||
elseif m =~? entered_atruleafter
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
|
||||
let values = ["charset", "page", "media", "import", "font-face"]
|
||||
|
||||
let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.entered_atrule
|
||||
call add(res, m .' ')
|
||||
elseif m =~? entered_atrule
|
||||
call add(res2, m .' ')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
|
||||
return []
|
||||
|
||||
endif
|
||||
endfunction
|
||||
594
runtime/autoload/htmlcomplete.vim
Normal file
594
runtime/autoload/htmlcomplete.vim
Normal file
@@ -0,0 +1,594 @@
|
||||
" Vim completion script
|
||||
" Language: XHTML 1.0 Strict
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2006 Feb 18
|
||||
|
||||
function! htmlcomplete#CompleteTags(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let curline = line('.')
|
||||
let compl_begin = col('.') - 2
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|[:.-]\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
" Handling of entities {{{
|
||||
if start >= 0 && line[start - 1] =~ '&'
|
||||
let b:entitiescompl = 1
|
||||
let b:compl_context = ''
|
||||
return start
|
||||
endif
|
||||
" }}}
|
||||
" Handling of <style> tag {{{
|
||||
let stylestart = searchpair('<style\>', '', '<\/style\>', "bnW")
|
||||
let styleend = searchpair('<style\>', '', '<\/style\>', "nW")
|
||||
if stylestart != 0 && styleend != 0
|
||||
if stylestart <= curline && styleend >= curline
|
||||
let start = col('.') - 1
|
||||
let b:csscompl = 1
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
" Handling of <script> tag {{{
|
||||
let scriptstart = searchpair('<script\>', '', '<\/script\>', "bnW")
|
||||
let scriptend = searchpair('<script\>', '', '<\/script\>', "nW")
|
||||
if scriptstart != 0 && scriptend != 0
|
||||
if scriptstart <= curline && scriptend >= curline
|
||||
let start = col('.') - 1
|
||||
let b:jscompl = 1
|
||||
let b:jsrange = [scriptstart, scriptend]
|
||||
while start >= 0 && line[start - 1] =~ '\k'
|
||||
let start -= 1
|
||||
endwhile
|
||||
" We are inside of <script> tag. But we should also get contents
|
||||
" of all linked external files and (secondary, less probably) other <script> tags
|
||||
" This logic could possible be done in separate function - may be
|
||||
" reused in events scripting (also with option could be reused for
|
||||
" CSS
|
||||
let b:js_extfiles = []
|
||||
let l = line('.')
|
||||
let c = col('.')
|
||||
call cursor(1,1)
|
||||
while search('<\@<=script\>', 'W') && line('.') <= l
|
||||
if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
|
||||
let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
|
||||
if filereadable(sname)
|
||||
let b:js_extfiles += readfile(sname)
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
call cursor(1,1)
|
||||
let js_scripttags = []
|
||||
while search('<script\>', 'W') && line('.') < l
|
||||
if matchstr(getline('.'), '<script[^>]*src') == ''
|
||||
let js_scripttag = getline(line('.'), search('</script>', 'W'))
|
||||
let js_scripttags += js_scripttag
|
||||
endif
|
||||
endwhile
|
||||
let b:js_extfiles += js_scripttags
|
||||
call cursor(l,c)
|
||||
unlet! l c
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
if !exists("b:csscompl") && !exists("b:jscompl")
|
||||
let b:compl_context = getline('.')[0:(compl_begin)]
|
||||
if b:compl_context !~ '<[^>]*$'
|
||||
" Look like we may have broken tag. Check previous lines.
|
||||
let i = 1
|
||||
while 1
|
||||
let context_line = getline(curline-i)
|
||||
if context_line =~ '<[^>]*$'
|
||||
" Yep, this is this line
|
||||
let context_lines = getline(curline-i, curline)
|
||||
let b:compl_context = join(context_lines, ' ')
|
||||
break
|
||||
elseif context_line =~ '>[^<]*$'
|
||||
" Normal tag line, no need for completion at all
|
||||
let b:compl_context = ''
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
" Make sure we don't have counter
|
||||
unlet! i
|
||||
endif
|
||||
let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
|
||||
" Return proper start for on-events. Without that beginning of
|
||||
" completion will be badly reported
|
||||
if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
|
||||
let start = col('.') - 1
|
||||
while start >= 0 && line[start - 1] =~ '\k'
|
||||
let start -= 1
|
||||
endwhile
|
||||
endif
|
||||
else
|
||||
let b:compl_context = getline('.')[0:compl_begin]
|
||||
endif
|
||||
return start
|
||||
else
|
||||
" Initialize base return lists
|
||||
let res = []
|
||||
let res2 = []
|
||||
" a:base is very short - we need context
|
||||
let context = b:compl_context
|
||||
" Check if we should do CSS completion inside of <style> tag
|
||||
" or JS completion inside of <script> tag
|
||||
if exists("b:csscompl")
|
||||
unlet! b:csscompl
|
||||
let context = b:compl_context
|
||||
unlet! b:compl_context
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
elseif exists("b:jscompl")
|
||||
unlet! b:jscompl
|
||||
return javascriptcomplete#CompleteJS(0, a:base)
|
||||
else
|
||||
if len(b:compl_context) == 0 && !exists("b:entitiescompl")
|
||||
return []
|
||||
endif
|
||||
let context = matchstr(b:compl_context, '.\zs.*')
|
||||
endif
|
||||
unlet! b:compl_context
|
||||
" Entities completion {{{
|
||||
if exists("b:entitiescompl")
|
||||
unlet! b:entitiescompl
|
||||
|
||||
if !exists("g:xmldata_xhtml10s")
|
||||
runtime! autoload/xml/xhtml10s.vim
|
||||
endif
|
||||
|
||||
let entities = g:xmldata_xhtml10s['vimxmlentities']
|
||||
|
||||
if len(a:base) == 1
|
||||
for m in entities
|
||||
if m =~ '^'.a:base
|
||||
call add(res, m.';')
|
||||
endif
|
||||
endfor
|
||||
return res
|
||||
else
|
||||
for m in entities
|
||||
if m =~? '^'.a:base
|
||||
call add(res, m.';')
|
||||
elseif m =~? a:base
|
||||
call add(res2, m.';')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
endif
|
||||
|
||||
|
||||
endif
|
||||
" }}}
|
||||
if context =~ '>'
|
||||
" Generally if context contains > it means we are outside of tag and
|
||||
" should abandon action - with one exception: <style> span { bo
|
||||
if context =~ 'style[^>]\{-}>[^<]\{-}$'
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
elseif context =~ 'script[^>]\{-}>[^<]\{-}$'
|
||||
let b:jsrange = [line('.'), search('<\/script\>', 'nW')]
|
||||
return javascriptcomplete#CompleteJS(0, context)
|
||||
else
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
|
||||
" If context contains > it means we are already outside of tag and we
|
||||
" should abandon action
|
||||
" If context contains white space it is attribute.
|
||||
" It can be also value of attribute.
|
||||
" We have to get first word to offer proper completions
|
||||
if context == ''
|
||||
let tag = ''
|
||||
else
|
||||
let tag = split(context)[0]
|
||||
endif
|
||||
" Get last word, it should be attr name
|
||||
let attr = matchstr(context, '.*\s\zs.*')
|
||||
" Possible situations where any prediction would be difficult:
|
||||
" 1. Events attributes
|
||||
if context =~ '\s'
|
||||
" Sort out style, class, and on* cases
|
||||
if context =~? "\\(on[a-z]*\\|id\\|style\\|class\\)\\s*=\\s*[\"']"
|
||||
" Id, class completion {{{
|
||||
if context =~? "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
|
||||
if context =~? "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
|
||||
let search_for = "class"
|
||||
elseif context =~? "id\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
|
||||
let search_for = "id"
|
||||
endif
|
||||
" Handle class name completion
|
||||
" 1. Find lines of <link stylesheet>
|
||||
" 1a. Check file for @import
|
||||
" 2. Extract filename(s?) of stylesheet,
|
||||
call cursor(1,1)
|
||||
let head = getline(search('<head\>'), search('<\/head>'))
|
||||
let headjoined = join(copy(head), ' ')
|
||||
if headjoined =~ '<style'
|
||||
" Remove possibly confusing CSS operators
|
||||
let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
|
||||
if search_for == 'class'
|
||||
let styleheadlines = split(stylehead)
|
||||
let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
|
||||
else
|
||||
let stylesheet = split(headjoined, '[{}]')
|
||||
" Get all lines which fit id syntax
|
||||
let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out possible color definitions
|
||||
call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out complex border definitions
|
||||
call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
let templines = join(classlines, ' ')
|
||||
let headclasslines = split(templines)
|
||||
call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
endif
|
||||
let internal = 1
|
||||
else
|
||||
let internal = 0
|
||||
endif
|
||||
let styletable = []
|
||||
let secimportfiles = []
|
||||
let filestable = filter(copy(head), "v:val =~ '\\(@import\\|link.*stylesheet\\)'")
|
||||
for line in filestable
|
||||
if line =~ "@import"
|
||||
let styletable += [matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")]
|
||||
elseif line =~ "<link"
|
||||
let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")]
|
||||
endif
|
||||
endfor
|
||||
for file in styletable
|
||||
if filereadable(file)
|
||||
let stylesheet = readfile(file)
|
||||
let secimport = filter(copy(stylesheet), "v:val =~ '@import'")
|
||||
if len(secimport) > 0
|
||||
for line in secimport
|
||||
let secfile = matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")
|
||||
let secfile = fnamemodify(file, ":p:h").'/'.secfile
|
||||
let secimportfiles += [secfile]
|
||||
endfor
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
let cssfiles = styletable + secimportfiles
|
||||
let classes = []
|
||||
for file in cssfiles
|
||||
if filereadable(file)
|
||||
let stylesheet = readfile(file)
|
||||
let stylefile = join(stylesheet, ' ')
|
||||
let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g')
|
||||
if search_for == 'class'
|
||||
let stylesheet = split(stylefile)
|
||||
let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
|
||||
else
|
||||
let stylesheet = split(stylefile, '[{}]')
|
||||
" Get all lines which fit id syntax
|
||||
let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out possible color definitions
|
||||
call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out complex border definitions
|
||||
call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
let templines = join(classlines, ' ')
|
||||
let stylelines = split(templines)
|
||||
let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
|
||||
endif
|
||||
endif
|
||||
" We gathered classes definitions from all external files
|
||||
let classes += classlines
|
||||
endfor
|
||||
if internal == 1
|
||||
let classes += headclasslines
|
||||
endif
|
||||
|
||||
if search_for == 'class'
|
||||
let elements = {}
|
||||
for element in classes
|
||||
if element =~ '^\.'
|
||||
let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
|
||||
let class = substitute(class, ':.*', '', '')
|
||||
if has_key(elements, 'common')
|
||||
let elements['common'] .= ' '.class
|
||||
else
|
||||
let elements['common'] = class
|
||||
endif
|
||||
else
|
||||
let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
|
||||
let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.'))
|
||||
if tagname != ''
|
||||
if has_key(elements, tagname)
|
||||
let elements[tagname] .= ' '.class
|
||||
else
|
||||
let elements[tagname] = class
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
if has_key(elements, tag) && has_key(elements, 'common')
|
||||
let values = split(elements[tag]." ".elements['common'])
|
||||
elseif has_key(elements, tag) && !has_key(elements, 'common')
|
||||
let values = split(elements[tag])
|
||||
elseif !has_key(elements, tag) && has_key(elements, 'common')
|
||||
let values = split(elements['common'])
|
||||
else
|
||||
return []
|
||||
endif
|
||||
|
||||
elseif search_for == 'id'
|
||||
" Find used IDs
|
||||
" 1. Catch whole file
|
||||
let filelines = getline(1, line('$'))
|
||||
" 2. Find lines with possible id
|
||||
let used_id_lines = filter(filelines, 'v:val =~ "id\\s*=\\s*[\"''][a-zA-Z0-9_-]\\+"')
|
||||
" 3a. Join all filtered lines
|
||||
let id_string = join(used_id_lines, ' ')
|
||||
" 3b. And split them to be sure each id is in separate item
|
||||
let id_list = split(id_string, 'id\s*=\s*')
|
||||
" 4. Extract id values
|
||||
let used_id = map(id_list, 'matchstr(v:val, "[\"'']\\zs[a-zA-Z0-9_-]\\+\\ze")')
|
||||
let joined_used_id = ','.join(used_id, ',').','
|
||||
|
||||
let allvalues = map(classes, 'matchstr(v:val, ".*#\\zs[a-zA-Z0-9_-]\\+")')
|
||||
|
||||
let values = []
|
||||
|
||||
for element in classes
|
||||
if joined_used_id !~ ','.element.','
|
||||
let values += [element]
|
||||
endif
|
||||
|
||||
endfor
|
||||
|
||||
endif
|
||||
|
||||
" We need special version of sbase
|
||||
let classbase = matchstr(context, ".*[\"']")
|
||||
let classquote = matchstr(classbase, '.$')
|
||||
|
||||
let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*")
|
||||
|
||||
for m in sort(values)
|
||||
if m =~? '^'.entered_class
|
||||
call add(res, m . classquote)
|
||||
elseif m =~? entered_class
|
||||
call add(res2, m . classquote)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
elseif context =~? "style\\s*=\\s*[\"'][^\"']*$"
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
|
||||
endif
|
||||
" }}}
|
||||
" Complete on-events {{{
|
||||
if context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
|
||||
" We have to:
|
||||
" 1. Find external files
|
||||
let b:js_extfiles = []
|
||||
let l = line('.')
|
||||
let c = col('.')
|
||||
call cursor(1,1)
|
||||
while search('<\@<=script\>', 'W') && line('.') <= l
|
||||
if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
|
||||
let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
|
||||
if filereadable(sname)
|
||||
let b:js_extfiles += readfile(sname)
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
" 2. Find at least one <script> tag
|
||||
call cursor(1,1)
|
||||
let js_scripttags = []
|
||||
while search('<script\>', 'W') && line('.') < l
|
||||
if matchstr(getline('.'), '<script[^>]*src') == ''
|
||||
let js_scripttag = getline(line('.'), search('</script>', 'W'))
|
||||
let js_scripttags += js_scripttag
|
||||
endif
|
||||
endwhile
|
||||
let b:js_extfiles += js_scripttags
|
||||
|
||||
" 3. Proper call for javascriptcomplete#CompleteJS
|
||||
call cursor(l,c)
|
||||
let js_context = matchstr(a:base, '\k\+$')
|
||||
let js_shortcontext = substitute(a:base, js_context.'$', '', '')
|
||||
let b:compl_context = context
|
||||
let b:jsrange = [l, l]
|
||||
unlet! l c
|
||||
return javascriptcomplete#CompleteJS(0, js_context)
|
||||
|
||||
endif
|
||||
|
||||
" }}}
|
||||
let stripbase = matchstr(context, ".*\\(on[a-zA-Z]*\\|style\\|class\\)\\s*=\\s*[\"']\\zs.*")
|
||||
" Now we have context stripped from all chars up to style/class.
|
||||
" It may fail with some strange style value combinations.
|
||||
if stripbase !~ "[\"']"
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
" Value of attribute completion {{{
|
||||
" If attr contains =\s*[\"'] we catched value of attribute
|
||||
if attr =~ "=\s*[\"']"
|
||||
" Let do attribute specific completion
|
||||
let attrname = matchstr(attr, '.*\ze\s*=')
|
||||
let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
|
||||
let values = []
|
||||
if attrname == 'media'
|
||||
let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
|
||||
elseif attrname == 'xml:space'
|
||||
let values = ["preserve"]
|
||||
elseif attrname == 'shape'
|
||||
let values = ["rect", "circle", "poly", "default"]
|
||||
elseif attrname == 'valuetype'
|
||||
let values = ["data", "ref", "object"]
|
||||
elseif attrname == 'method'
|
||||
let values = ["get", "post"]
|
||||
elseif attrname == 'dir'
|
||||
let values = ["ltr", "rtl"]
|
||||
elseif attrname == 'frame'
|
||||
let values = ["void", "above", "below", "hsides", "lhs", "rhs", "vsides", "box", "border"]
|
||||
elseif attrname == 'rules'
|
||||
let values = ["none", "groups", "rows", "all"]
|
||||
elseif attrname == 'align'
|
||||
let values = ["left", "center", "right", "justify", "char"]
|
||||
elseif attrname == 'valign'
|
||||
let values = ["top", "middle", "bottom", "baseline"]
|
||||
elseif attrname == 'scope'
|
||||
let values = ["row", "col", "rowgroup", "colgroup"]
|
||||
elseif attrname == 'href'
|
||||
" Now we are looking for local anchors defined by name or id
|
||||
if entered_value =~ '^#'
|
||||
let file = join(getline(1, line('$')), ' ')
|
||||
" Split it be sure there will be one id/name element in
|
||||
" item, it will be also first word [a-zA-Z0-9_-] in element
|
||||
let oneelement = split(file, "\\(meta \\)\\@<!\\(name\\|id\\)\\s*=\\s*[\"']")
|
||||
for i in oneelement
|
||||
let values += ['#'.matchstr(i, "^[a-zA-Z][a-zA-Z0-9%_-]*")]
|
||||
endfor
|
||||
endif
|
||||
elseif attrname == 'type'
|
||||
if context =~ '^input'
|
||||
let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"]
|
||||
elseif context =~ '^button'
|
||||
let values = ["button", "submit", "reset"]
|
||||
elseif context =~ '^style'
|
||||
let values = ["text/css"]
|
||||
elseif context =~ '^script'
|
||||
let values = ["text/javascript"]
|
||||
endif
|
||||
else
|
||||
return []
|
||||
endif
|
||||
|
||||
if len(values) == 0
|
||||
return []
|
||||
endif
|
||||
|
||||
" We need special version of sbase
|
||||
let attrbase = matchstr(context, ".*[\"']")
|
||||
let attrquote = matchstr(attrbase, '.$')
|
||||
|
||||
for m in values
|
||||
" This if is needed to not offer all completions as-is
|
||||
" alphabetically but sort them. Those beginning with entered
|
||||
" part will be as first choices
|
||||
if m =~ '^'.entered_value
|
||||
call add(res, m . attrquote.' ')
|
||||
elseif m =~ entered_value
|
||||
call add(res2, m . attrquote.' ')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
" }}}
|
||||
" Attribute completion {{{
|
||||
" Shorten context to not include last word
|
||||
let sbase = matchstr(context, '.*\ze\s.*')
|
||||
|
||||
" Load data {{{
|
||||
if !exists("g:xmldata_xhtml10s")
|
||||
runtime! autoload/xml/xhtml10s.vim
|
||||
endif
|
||||
" }}}
|
||||
"
|
||||
let attrs = keys(g:xmldata_xhtml10s[tag][1])
|
||||
|
||||
for m in sort(attrs)
|
||||
if m =~ '^'.attr
|
||||
call add(res, m)
|
||||
elseif m =~ attr
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
let menu = res + res2
|
||||
if has_key(g:xmldata_xhtml10s, 'vimxmlattrinfo')
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if has_key(g:xmldata_xhtml10s['vimxmlattrinfo'], item)
|
||||
let m_menu = g:xmldata_xhtml10s['vimxmlattrinfo'][item][0]
|
||||
let m_info = g:xmldata_xhtml10s['vimxmlattrinfo'][item][1]
|
||||
if m_menu !~ 'Bool'
|
||||
let item .= '="'
|
||||
endif
|
||||
else
|
||||
let m_menu = ''
|
||||
let m_info = ''
|
||||
let item .= '="'
|
||||
endif
|
||||
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
|
||||
endfor
|
||||
else
|
||||
let final_menu = map(menu, 'v:val."=\""')
|
||||
endif
|
||||
return final_menu
|
||||
|
||||
endif
|
||||
" }}}
|
||||
" Close tag {{{
|
||||
let b:unaryTagsStack = "base meta link hr br param img area input col"
|
||||
if context =~ '^\/'
|
||||
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
return [opentag.">"]
|
||||
endif
|
||||
" Load data {{{
|
||||
if !exists("g:xmldata_xhtml10s")
|
||||
runtime! autoload/xml/xhtml10s.vim
|
||||
endif
|
||||
" }}}
|
||||
" Tag completion {{{
|
||||
" Deal with tag completion.
|
||||
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
if opentag == ''
|
||||
" Hack for sometimes failing GetLastOpenTag.
|
||||
" As far as I tested fail isn't GLOT fault but problem
|
||||
" of invalid document - not properly closed tags and other mish-mash.
|
||||
" Also when document is empty. Return list of *all* tags.
|
||||
let tags = keys(g:xmldata_xhtml10s)
|
||||
call filter(tags, 'v:val !~ "^vimxml"')
|
||||
else
|
||||
let tags = g:xmldata_xhtml10s[opentag][0]
|
||||
endif
|
||||
" }}}
|
||||
|
||||
|
||||
for m in sort(tags)
|
||||
if m =~ '^'.context
|
||||
call add(res, m)
|
||||
elseif m =~ context
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
let menu = res + res2
|
||||
if has_key(g:xmldata_xhtml10s, 'vimxmltaginfo')
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if has_key(g:xmldata_xhtml10s['vimxmltaginfo'], item)
|
||||
let m_menu = g:xmldata_xhtml10s['vimxmltaginfo'][item][0]
|
||||
let m_info = g:xmldata_xhtml10s['vimxmltaginfo'][item][1]
|
||||
else
|
||||
let m_menu = ''
|
||||
let m_info = ''
|
||||
endif
|
||||
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
|
||||
endfor
|
||||
else
|
||||
let final_menu = menu
|
||||
endif
|
||||
return final_menu
|
||||
|
||||
|
||||
" }}}
|
||||
endif
|
||||
endfunction
|
||||
" vim:set foldmethod=marker:
|
||||
625
runtime/autoload/javascriptcomplete.vim
Normal file
625
runtime/autoload/javascriptcomplete.vim
Normal file
@@ -0,0 +1,625 @@
|
||||
" Vim completion script
|
||||
" Language: Java Script
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2006 Feb 6
|
||||
|
||||
function! javascriptcomplete#CompleteJS(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let curline = line('.')
|
||||
let compl_begin = col('.') - 2
|
||||
" Bit risky but JS is rather limited language and local chars shouldn't
|
||||
" fint way into names
|
||||
while start >= 0 && line[start - 1] =~ '\k'
|
||||
let start -= 1
|
||||
endwhile
|
||||
let b:compl_context = getline('.')[0:compl_begin]
|
||||
return start
|
||||
else
|
||||
" Initialize base return lists
|
||||
let res = []
|
||||
let res2 = []
|
||||
" a:base is very short - we need context
|
||||
" Shortcontext is context without a:base, useful for checking if we are
|
||||
" looking for objects and for what objects we are looking for
|
||||
let context = b:compl_context
|
||||
let shortcontext = substitute(context, a:base.'$', '', '')
|
||||
unlet! b:compl_context
|
||||
|
||||
if exists("b:jsrange")
|
||||
let file = getline(b:jsrange[0],b:jsrange[1])
|
||||
unlet! b:jsrange
|
||||
|
||||
if len(b:js_extfiles) > 0
|
||||
let file = b:js_extfiles + file
|
||||
endif
|
||||
|
||||
else
|
||||
let file = getline(1, '$')
|
||||
endif
|
||||
|
||||
|
||||
" Completion of properties, methods, etc. {{{
|
||||
if shortcontext =~ '\.$'
|
||||
" Complete methods and properties for objects
|
||||
" DOM separate
|
||||
let doms = ['style.']
|
||||
" Arrays
|
||||
let arrayprop = ['constructor', 'index', 'input', 'length', 'prototype']
|
||||
let arraymeth = ['concat', 'join', 'pop', 'push', 'reverse', 'shift',
|
||||
\ 'splice', 'sort', 'toSource', 'toString', 'unshift', 'valueOf',
|
||||
\ 'watch', 'unwatch']
|
||||
call map(arraymeth, 'v:val."("')
|
||||
let arrays = arrayprop + arraymeth
|
||||
|
||||
" Boolean - complete subset of array values
|
||||
" properties - constructor, prototype
|
||||
" methods - toSource, toString, valueOf
|
||||
|
||||
" Date
|
||||
" properties - constructor, prototype
|
||||
let datemeth = ['getDate', 'getDay', 'getFullYear', 'getHours', 'getMilliseconds',
|
||||
\ 'getMinutes', 'getMonth', 'getSeconds', 'getTime', 'getTimezoneOffset',
|
||||
\ 'getUTCDate', 'getUTCDay', 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds',
|
||||
\ 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
|
||||
\ 'getYear', 'parse', 'parse',
|
||||
\ 'setDate', 'setDay', 'setFullYear', 'setHours', 'setMilliseconds',
|
||||
\ 'setMinutes', 'setMonth', 'setSeconds',
|
||||
\ 'setUTCDate', 'setUTCDay', 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds',
|
||||
\ 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setYear', 'setTime',
|
||||
\ 'toGMTString', 'toLocaleString', 'toLocaleDateString', 'toLocaleTimeString',
|
||||
\ 'toSource', 'toString', 'toUTCString', 'UTC', 'valueOf', 'watch', 'unwatch']
|
||||
call map(datemeth, 'v:val."("')
|
||||
let dates = datemeth
|
||||
|
||||
" Function
|
||||
let funcprop = ['arguments', 'arguments.callee', 'arguments.caller', 'arguments.length',
|
||||
\ 'arity', 'constructor', 'length', 'prototype']
|
||||
let funcmeth = ['apply', 'call', 'toSource', 'toString', 'valueOf']
|
||||
call map(funcmeth, 'v:val."("')
|
||||
let funcs = funcprop + funcmeth
|
||||
|
||||
" Math
|
||||
let mathprop = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', 'SQRT1_2', 'SQRT']
|
||||
let mathmeth = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor',
|
||||
\ 'log', 'max', 'min', 'pow', 'random', 'round', 'sin', 'sqrt', 'tan',
|
||||
\ 'watch', 'unwatch']
|
||||
call map(mathmeth, 'v:val."("')
|
||||
let maths = mathprop + mathmeth
|
||||
|
||||
" Number
|
||||
let numbprop = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', 'POSITIVE_INFINITY',
|
||||
\ 'constructor', 'prototype']
|
||||
let numbmeth = ['toExponential', 'toFixed', 'toPrecision', 'toSource', 'toString', 'valueOf',
|
||||
\ 'watch', 'unwatch']
|
||||
call map(numbmeth, 'v:val."("')
|
||||
let numbs = numbprop + numbmeth
|
||||
|
||||
" Object
|
||||
let objeprop = ['constructor', 'prototype']
|
||||
let objemeth = ['eval', 'toSource', 'toString', 'unwatch', 'watch', 'valueOf']
|
||||
call map(objemeth, 'v:val."("')
|
||||
let objes = objeprop + objemeth
|
||||
|
||||
" RegExp
|
||||
let regeprop = ['constructor', 'global', 'ignoreCase', 'lastIndex', 'multiline', 'source', 'prototype']
|
||||
let regemeth = ['exec', 'test', 'toSource', 'toString', 'watch', 'unwatch']
|
||||
call map(regemeth, 'v:val."("')
|
||||
let reges = regeprop + regemeth
|
||||
|
||||
" String
|
||||
let striprop = ['constructor', 'length', 'prototype']
|
||||
let strimeth = ['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat',
|
||||
\ 'fixed', 'fontcolor', 'fontsize', 'fromCharCode', 'indexOf', 'italics',
|
||||
\ 'lastIndexOf', 'link', 'match', 'replace', 'search', 'slice', 'small',
|
||||
\ 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLowerCase',
|
||||
\ 'toSource', 'toString', 'toUpperCase', 'watch', 'unwatch']
|
||||
call map(strimeth, 'v:val."("')
|
||||
let stris = striprop + strimeth
|
||||
|
||||
" User created properties
|
||||
let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\k"')
|
||||
let juser_props1 = join(user_props1, ' ')
|
||||
let user_props1 = split(juser_props1, '\zethis\.')
|
||||
unlet! juser_props1
|
||||
call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\k\\+\\ze")')
|
||||
|
||||
let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\k"')
|
||||
let juser_props2 = join(user_props2, ' ')
|
||||
let user_props2 = split(juser_props2, '\zeprototype\.')
|
||||
unlet! juser_props2
|
||||
call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\k\\+\\ze")')
|
||||
let user_props = user_props1 + user_props2
|
||||
|
||||
" HTML DOM properties
|
||||
" Anchors - anchor.
|
||||
let anchprop = ['accessKey', 'charset', 'coords', 'href', 'hreflang', 'id', 'innerHTML',
|
||||
\ 'name', 'rel', 'rev', 'shape', 'tabIndex', 'target', 'type', 'onBlur', 'onFocus']
|
||||
let anchmeth = ['blur', 'focus']
|
||||
call map(anchmeth, 'v:val."("')
|
||||
let anths = anchprop + anchmeth
|
||||
" Area - area.
|
||||
let areaprop = ['accessKey', 'alt', 'coords', 'hash', 'host', 'hostname', 'href', 'id',
|
||||
\ 'noHref', 'pathname', 'port', 'protocol', 'search', 'shape', 'tabIndex', 'target']
|
||||
let areameth = ['onClick', 'onDblClick', 'onMouseOut', 'onMouseOver']
|
||||
call map(areameth, 'v:val."("')
|
||||
let areas = areaprop + areameth
|
||||
" Base - base.
|
||||
let baseprop = ['href', 'id', 'target']
|
||||
let bases = baseprop
|
||||
" Body - body.
|
||||
let bodyprop = ['aLink', 'background', 'gbColor', 'id', 'link', 'scrollLeft', 'scrollTop',
|
||||
\ 'text', 'vLink']
|
||||
let bodys = bodyprop
|
||||
" Document - document.
|
||||
let docuprop = ['anchors', 'applets', 'childNodes', 'embeds', 'forms', 'images', 'links', 'stylesheets',
|
||||
\ 'body', 'cookie', 'documentElement', 'domain', 'lastModified', 'referrer', 'title', 'URL']
|
||||
let documeth = ['close', 'createAttribute', 'createElement', 'createTextNode', 'focus', 'getElementById',
|
||||
\ 'getElementsByName', 'getElementsByTagName', 'open', 'write', 'writeln',
|
||||
\ 'onClick', 'onDblClick', 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp',
|
||||
\ 'onMouseDown', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onResize']
|
||||
call map(documeth, 'v:val."("')
|
||||
let docuxprop = ['attributes', 'childNodes', 'doctype', 'documentElement', 'firstChild',
|
||||
\ 'implementation', 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType',
|
||||
\ 'nodeValue', 'ownerDocument', 'parentNode', 'previousSibling']
|
||||
let docuxmeth = ['createAttribute', 'createCDATASection',
|
||||
\ 'createComment', 'createDocument', 'createDocumentFragment',
|
||||
\ 'createElement', 'createEntityReference', 'createProcessingInstruction',
|
||||
\ 'createTextNode']
|
||||
call map(docuxmeth, 'v:val."("')
|
||||
let docus = docuprop + docuxprop + documeth + docuxmeth
|
||||
" Form - form.
|
||||
let formprop = ['elements', 'acceptCharset', 'action', 'encoding', 'enctype', 'id', 'length',
|
||||
\ 'method', 'name', 'tabIndex', 'target']
|
||||
let formmeth = ['reset', 'submit', 'onReset', 'onSubmit']
|
||||
call map(formmeth, 'v:val."("')
|
||||
let forms = formprop + formmeth
|
||||
" Frame - frame.
|
||||
let framprop = ['contentDocument', 'frameBorder', 'id', 'longDesc', 'marginHeight', 'marginWidth',
|
||||
\ 'name', 'noResize', 'scrolling', 'src']
|
||||
let frammeth = ['blur', 'focus']
|
||||
call map(frammeth, 'v:val."("')
|
||||
let frams = framprop + frammeth
|
||||
" Frameset - frameset.
|
||||
let fsetprop = ['cols', 'id', 'rows']
|
||||
let fsetmeth = ['blur', 'focus']
|
||||
call map(fsetmeth, 'v:val."("')
|
||||
let fsets = fsetprop + fsetmeth
|
||||
" History - history.
|
||||
let histprop = ['length']
|
||||
let histmeth = ['back', 'forward', 'go']
|
||||
call map(histmeth, 'v:val."("')
|
||||
let hists = histprop + histmeth
|
||||
" Iframe - iframe.
|
||||
let ifraprop = ['align', 'frameBorder', 'height', 'id', 'longDesc', 'marginHeight', 'marginWidth',
|
||||
\ 'name', 'scrolling', 'src', 'width']
|
||||
let ifras = ifraprop
|
||||
" Image - image.
|
||||
let imagprop = ['align', 'alt', 'border', 'complete', 'height', 'hspace', 'id', 'isMap', 'longDesc',
|
||||
\ 'lowSrc', 'name', 'src', 'useMap', 'vspace', 'width']
|
||||
let imagmeth = ['onAbort', 'onError', 'onLoad']
|
||||
call map(imagmeth, 'v:val."("')
|
||||
let imags = histprop + imagmeth
|
||||
" Button - accessible only by other properties
|
||||
let buttprop = ['accessKey', 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
|
||||
let buttmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
|
||||
call map(buttmeth, 'v:val."("')
|
||||
let butts = buttprop + buttmeth
|
||||
" Checkbox - accessible only by other properties
|
||||
let checprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked',
|
||||
\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
|
||||
let checmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
|
||||
call map(checmeth, 'v:val."("')
|
||||
let checs = checprop + checmeth
|
||||
" File upload - accessible only by other properties
|
||||
let fileprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
|
||||
\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
|
||||
let filemeth = ['blur', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
|
||||
call map(filemeth, 'v:val."("')
|
||||
let files = fileprop + filemeth
|
||||
" Hidden - accessible only by other properties
|
||||
let hiddprop = ['defaultValue', 'form', 'id', 'name', 'type', 'value']
|
||||
let hidds = hiddprop
|
||||
" Password - accessible only by other properties
|
||||
let passprop = ['accept', 'accessKey', 'defaultValue',
|
||||
\ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly', 'size', 'tabIndex',
|
||||
\ 'type', 'value']
|
||||
let passmeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus', 'onKeyDown',
|
||||
\ 'onKeyPress', 'onKeyUp']
|
||||
call map(passmeth, 'v:val."("')
|
||||
let passs = passprop + passmeth
|
||||
" Radio - accessible only by other properties
|
||||
let radiprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked',
|
||||
\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
|
||||
let radimeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus']
|
||||
call map(radimeth, 'v:val."("')
|
||||
let radis = radiprop + radimeth
|
||||
" Reset - accessible only by other properties
|
||||
let reseprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
|
||||
\ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value']
|
||||
let resemeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus']
|
||||
call map(resemeth, 'v:val."("')
|
||||
let reses = reseprop + resemeth
|
||||
" Submit - accessible only by other properties
|
||||
let submprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
|
||||
\ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value']
|
||||
let submmeth = ['blur', 'click', 'focus', 'select', 'onClick', 'onSelectStart']
|
||||
call map(submmeth, 'v:val."("')
|
||||
let subms = submprop + submmeth
|
||||
" Text - accessible only by other properties
|
||||
let textprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
|
||||
\ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly',
|
||||
\ 'size', 'tabIndex', 'type', 'value']
|
||||
let textmeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus', 'onKeyDown',
|
||||
\ 'onKeyPress', 'onKeyUp', 'onSelect']
|
||||
call map(textmeth, 'v:val."("')
|
||||
let texts = textprop + textmeth
|
||||
" Link - link.
|
||||
let linkprop = ['charset', 'disabled', 'href', 'hreflang', 'id', 'media',
|
||||
\ 'rel', 'rev', 'target', 'type']
|
||||
let linkmeth = ['onLoad']
|
||||
call map(linkmeth, 'v:val."("')
|
||||
let links = linkprop + linkmeth
|
||||
" Location - location.
|
||||
let locaprop = ['href', 'hash', 'host', 'hostname', 'pathname', 'port', 'protocol',
|
||||
\ 'search']
|
||||
let locameth = ['assign', 'reload', 'replace']
|
||||
call map(locameth, 'v:val."("')
|
||||
let locas = locaprop + locameth
|
||||
" Meta - meta.
|
||||
let metaprop = ['charset', 'content', 'disabled', 'httpEquiv', 'name', 'scheme']
|
||||
let metas = metaprop
|
||||
" Navigator - navigator.
|
||||
let naviprop = ['plugins', 'appCodeName', 'appName', 'appVersion', 'cookieEnabled',
|
||||
\ 'platform', 'userAgent']
|
||||
let navimeth = ['javaEnabled', 'taintEnabled']
|
||||
call map(navimeth, 'v:val."("')
|
||||
let navis = naviprop + navimeth
|
||||
" Object - object.
|
||||
let objeprop = ['align', 'archive', 'border', 'code', 'codeBase', 'codeType', 'data',
|
||||
\ 'declare', 'form', 'height', 'hspace', 'id', 'name', 'standby', 'tabIndex',
|
||||
\ 'type', 'useMap', 'vspace', 'width']
|
||||
let objes = objeprop
|
||||
" Option - accessible only by other properties
|
||||
let optiprop = ['defaultSelected',
|
||||
\ 'disabled', 'form', 'id', 'index', 'label', 'selected', 'text', 'value']
|
||||
let optis = optiprop
|
||||
" Screen - screen.
|
||||
let screprop = ['availHeight', 'availWidth', 'colorDepth', 'height', 'width']
|
||||
let scres = screprop
|
||||
" Select - accessible only by other properties
|
||||
let seleprop = ['options', 'disabled', 'form', 'id', 'length', 'multiple', 'name',
|
||||
\ 'selectedIndex', 'size', 'tabIndex', 'type', 'value']
|
||||
let selemeth = ['blur', 'focus', 'remove', 'onBlur', 'onChange', 'onFocus']
|
||||
call map(selemeth, 'v:val."("')
|
||||
let seles = seleprop + selemeth
|
||||
" Style - style.
|
||||
let stylprop = ['background', 'backgroundAttachment', 'backgroundColor', 'backgroundImage',
|
||||
\ 'backgroundPosition', 'backgroundRepeat',
|
||||
\ 'border', 'borderBottom', 'borderLeft', 'borderRight', 'borderTop',
|
||||
\ 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor',
|
||||
\ 'borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle',
|
||||
\ 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth',
|
||||
\ 'borderColor', 'borderStyle', 'borderWidth', 'margin', 'marginBottom',
|
||||
\ 'marginLeft', 'marginRight', 'marginTop', 'outline', 'outlineStyle', 'outlineWidth',
|
||||
\ 'outlineColor', 'outlineStyle', 'outlineWidth', 'padding', 'paddingBottom',
|
||||
\ 'paddingLeft', 'paddingRight', 'paddingTop',
|
||||
\ 'clear', 'clip', 'clipBottom', 'clipLeft', 'clipRight', 'clipTop', 'content',
|
||||
\ 'counterIncrement', 'counterReset', 'cssFloat', 'cursor', 'direction',
|
||||
\ 'display', 'markerOffset', 'marks', 'maxHeight', 'maxWidth', 'minHeight',
|
||||
\ 'minWidth', 'overflow', 'overflowX', 'overflowY', 'verticalAlign', 'visibility',
|
||||
\ 'width',
|
||||
\ 'listStyle', 'listStyleImage', 'listStylePosition', 'listStyleType',
|
||||
\ 'cssText', 'bottom', 'height', 'left', 'position', 'right', 'top', 'width', 'zindex',
|
||||
\ 'orphans', 'widows', 'page', 'pageBreakAfter', 'pageBreakBefore', 'pageBreakInside',
|
||||
\ 'borderCollapse', 'borderSpacing', 'captionSide', 'emptyCells', 'tableLayout',
|
||||
\ 'color', 'font', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch',
|
||||
\ 'fontStyle', 'fontVariant', 'fontWeight', 'letterSpacing', 'lineHeight', 'quotes',
|
||||
\ 'textAlign', 'textIndent', 'textShadow', 'textTransform', 'textUnderlinePosition',
|
||||
\ 'unicodeBidi', 'whiteSpace', 'wordSpacing']
|
||||
let styls = stylprop
|
||||
" Table - table.
|
||||
let tablprop = ['rows', 'tBodies', 'align', 'bgColor', 'border', 'caption', 'cellPadding',
|
||||
\ 'cellSpacing', 'frame', 'height', 'rules', 'summary', 'tFoot', 'tHead', 'width']
|
||||
let tablmeth = ['createCaption', 'createTFoot', 'createTHead', 'deleteCaption', 'deleteRow',
|
||||
\ 'deleteTFoot', 'deleteTHead', 'insertRow']
|
||||
call map(tablmeth, 'v:val."("')
|
||||
let tabls = tablprop + tablmeth
|
||||
" Table data - TableData.
|
||||
let tdatprop = ['abbr', 'align', 'axis', 'bgColor', 'cellIndex', 'ch', 'chOff',
|
||||
\ 'colSpan', 'headers', 'noWrap', 'rowSpan', 'scope', 'vAlign', 'width']
|
||||
let tdats = tdatprop
|
||||
" Table row - TableRow.
|
||||
let trowprop = ['cells', 'align', 'bgColor', 'ch', 'chOff', 'rowIndex', 'sectionRowIndex',
|
||||
\ 'vAlign']
|
||||
let trowmeth = ['deleteCell', 'insertCell']
|
||||
call map(trowmeth, 'v:val."("')
|
||||
let trows = trowprop + trowmeth
|
||||
" Textarea - accessible only by other properties
|
||||
let tareprop = ['accessKey', 'cols', 'defaultValue',
|
||||
\ 'disabled', 'form', 'id', 'name', 'readOnly', 'rows',
|
||||
\ 'tabIndex', 'type', 'value', 'selectionStart', 'selectionEnd']
|
||||
let taremeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus']
|
||||
call map(taremeth, 'v:val."("')
|
||||
let tares = tareprop + taremeth
|
||||
" Window - window.
|
||||
let windprop = ['frames', 'closed', 'defaultStatus', 'encodeURI', 'event', 'history',
|
||||
\ 'length', 'location', 'name', 'onload', 'opener', 'parent', 'screen', 'self',
|
||||
\ 'status', 'top', 'XMLHttpRequest', 'ActiveXObject']
|
||||
let windmeth = ['alert', 'blur', 'clearInterval', 'clearTimeout', 'close', 'confirm', 'focus',
|
||||
\ 'moveBy', 'moveTo', 'open', 'print', 'prompt', 'scrollBy', 'scrollTo', 'setInterval',
|
||||
\ 'setTimeout']
|
||||
call map(windmeth, 'v:val."("')
|
||||
let winds = windprop + windmeth
|
||||
" XMLHttpRequest - access by new xxx()
|
||||
let xmlhprop = ['onreadystatechange', 'readyState', 'responseText', 'responseXML',
|
||||
\ 'status', 'statusText', 'parseError']
|
||||
let xmlhmeth = ['abort', 'getAllResponseHeaders', 'getResponseHeaders', 'open',
|
||||
\ 'send', 'setRequestHeader']
|
||||
call map(xmlhmeth, 'v:val."("')
|
||||
let xmlhs = xmlhprop + xmlhmeth
|
||||
|
||||
" XML DOM
|
||||
" Attributes - element.attributes[x].
|
||||
let xdomattrprop = ['name', 'specified', 'value']
|
||||
" Element - anyelement.
|
||||
let xdomelemprop = ['attributes', 'childNodes', 'firstChild', 'lastChild',
|
||||
\ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue',
|
||||
\ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling', 'tagName']
|
||||
let xdomelemmeth = ['appendChild', 'cloneNode', 'getAttribute', 'getAttributeNode',
|
||||
\ 'getElementsByTagName', 'hasChildNodes', 'insertBefore', 'normalize',
|
||||
\ 'removeAttribute', 'removeAttributeNode', 'removeChild', 'replaceChild',
|
||||
\ 'setAttribute', 'setAttributeNode']
|
||||
call map(xdomelemmeth, 'v:val."("')
|
||||
let xdomelems = xdomelemprop + xdomelemmeth
|
||||
" Node - anynode.
|
||||
let xdomnodeprop = ['attributes', 'childNodes', 'firstChild', 'lastChild',
|
||||
\ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue',
|
||||
\ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling']
|
||||
let xdomnodemeth = ['appendChild', 'cloneNode',
|
||||
\ 'hasChildNodes', 'insertBefore', 'removeChild', 'replaceChild']
|
||||
call map(xdomnodemeth, 'v:val."("')
|
||||
let xdomnodes = xdomnodeprop + xdomnodemeth
|
||||
" NodeList
|
||||
let xdomnliss = ['length', 'item(']
|
||||
" Error - parseError.
|
||||
let xdomerror = ['errorCode', 'reason', 'line', 'linepos', 'srcText', 'url', 'filepos']
|
||||
|
||||
" Find object type declaration to reduce number of suggestions. {{{
|
||||
" 1. Get object name
|
||||
" 2. Find object declaration line
|
||||
" 3. General declaration follows "= new Type" syntax, additional else
|
||||
" for regexp "= /re/"
|
||||
" 4. Make correction for Microsoft.XMLHTTP ActiveXObject
|
||||
" 5. Repeat for external files
|
||||
let object = matchstr(shortcontext, '\zs\k\+\ze\(\[.\{-}\]\)\?\.$')
|
||||
if len(object) > 0
|
||||
let decl_line = search(object.'.\{-}=\s*new\s*', 'bn')
|
||||
if decl_line > 0
|
||||
let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\k\+\ze')
|
||||
if object_type == 'ActiveXObject' && matchstr(getline(decl_line), object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
|
||||
let object_type = 'XMLHttpRequest'
|
||||
endif
|
||||
else
|
||||
let decl_line = search('var\s*'.object.'\s*=\s*\/', 'bn')
|
||||
if decl_line > 0
|
||||
let object_type = 'RegExp'
|
||||
endif
|
||||
endif
|
||||
" We didn't find var declaration in current file but we may have
|
||||
" something in external files.
|
||||
if decl_line == 0 && exists("b:js_extfiles")
|
||||
let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "'.object.'.\\{-}=\\s*new\\s*"')
|
||||
if len(dext_line) > 0
|
||||
let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\k\+\ze')
|
||||
if object_type == 'ActiveXObject' && matchstr(dext_line[-1], object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
|
||||
let object_type = 'XMLHttpRequest'
|
||||
endif
|
||||
else
|
||||
let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "var\s*'.object.'\\s*=\\s*\\/"')
|
||||
if len(dext_line) > 0
|
||||
let object_type = 'RegExp'
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
|
||||
if !exists('object_type')
|
||||
let object_type = ''
|
||||
endif
|
||||
|
||||
if object_type == 'Date'
|
||||
let values = dates
|
||||
elseif object_type == 'Image'
|
||||
let values = imags
|
||||
elseif object_type == 'Array'
|
||||
let values = arrays
|
||||
elseif object_type == 'Boolean'
|
||||
" TODO: a bit more than real boolean
|
||||
let values = arrays
|
||||
elseif object_type == 'XMLHttpRequest'
|
||||
let values = xmlhs
|
||||
elseif object_type == 'String'
|
||||
let values = stris
|
||||
elseif object_type == 'RegExp'
|
||||
let values = reges
|
||||
elseif object_type == 'Math'
|
||||
let values = maths
|
||||
endif
|
||||
|
||||
if !exists('values')
|
||||
" List of properties
|
||||
if shortcontext =~ 'Math\.$'
|
||||
let values = maths
|
||||
elseif shortcontext =~ 'anchors\(\[.\{-}\]\)\?\.$'
|
||||
let values = anths
|
||||
elseif shortcontext =~ 'area\.$'
|
||||
let values = areas
|
||||
elseif shortcontext =~ 'base\.$'
|
||||
let values = bases
|
||||
elseif shortcontext =~ 'body\.$'
|
||||
let values = bodys
|
||||
elseif shortcontext =~ 'document\.$'
|
||||
let values = docus
|
||||
elseif shortcontext =~ 'forms\(\[.\{-}\]\)\?\.$'
|
||||
let values = forms
|
||||
elseif shortcontext =~ 'frameset\.$'
|
||||
let values = fsets
|
||||
elseif shortcontext =~ 'history\.$'
|
||||
let values = hists
|
||||
elseif shortcontext =~ 'iframe\.$'
|
||||
let values = ifras
|
||||
elseif shortcontext =~ 'images\(\[.\{-}\]\)\?\.$'
|
||||
let values = imags
|
||||
elseif shortcontext =~ 'links\(\[.\{-}\]\)\?\.$'
|
||||
let values = links
|
||||
elseif shortcontext =~ 'location\.$'
|
||||
let values = locas
|
||||
elseif shortcontext =~ 'meta\.$'
|
||||
let values = metas
|
||||
elseif shortcontext =~ 'navigator\.$'
|
||||
let values = navis
|
||||
elseif shortcontext =~ 'object\.$'
|
||||
let values = objes
|
||||
elseif shortcontext =~ 'screen\.$'
|
||||
let values = scres
|
||||
elseif shortcontext =~ 'style\.$'
|
||||
let values = styls
|
||||
elseif shortcontext =~ 'table\.$'
|
||||
let values = tabls
|
||||
elseif shortcontext =~ 'TableData\.$'
|
||||
let values = tdats
|
||||
elseif shortcontext =~ 'TableRow\.$'
|
||||
let values = trows
|
||||
elseif shortcontext =~ 'window\.$'
|
||||
let values = winds
|
||||
elseif shortcontext =~ 'parseError\.$'
|
||||
let values = xdomerror
|
||||
elseif shortcontext =~ 'attributes\[\d\+\]\.$'
|
||||
let values = xdomattrprop
|
||||
else
|
||||
let values = user_props + arrays + dates + funcs + maths + numbs + objes + reges + stris
|
||||
let values += doms + anths + areas + bases + bodys + docus + forms + frams + fsets + hists
|
||||
let values += ifras + imags + links + locas + metas + navis + objes + scres
|
||||
let values += tabls + trows + tares + winds
|
||||
let values += xdomnodes + xdomnliss + xdomelems
|
||||
endif
|
||||
endif
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.a:base
|
||||
call add(res, m)
|
||||
elseif m =~? a:base
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
unlet! values
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" Get variables data.
|
||||
let variables = filter(copy(file), 'v:val =~ "var\\s"')
|
||||
call map(variables, 'matchstr(v:val, ".\\{-}var\\s\\+\\zs.*\\ze")')
|
||||
call map(variables, 'substitute(v:val, ";\\|$", ",", "g")')
|
||||
let vars = []
|
||||
" This loop (and next one) is necessary to get variable names from
|
||||
" constructs like: var var1, var2, var3 = "something";
|
||||
for i in range(len(variables))
|
||||
let comma_separated = split(variables[i], ',\s*')
|
||||
call map(comma_separated, 'matchstr(v:val, "\\k\\+")')
|
||||
let vars += comma_separated
|
||||
endfor
|
||||
|
||||
let variables = sort(vars)
|
||||
unlet! vars
|
||||
|
||||
" Add "no var" variables.
|
||||
let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\k\\+\\s*="')
|
||||
let u_vars = []
|
||||
for i in range(len(undeclared_variables))
|
||||
let split_equal = split(undeclared_variables[i], '\s*=')
|
||||
call map(split_equal, 'matchstr(v:val, "\\k\\+$")')
|
||||
let u_vars += split_equal
|
||||
endfor
|
||||
|
||||
let variables += sort(u_vars)
|
||||
unlet! u_vars
|
||||
|
||||
" Get functions
|
||||
let functions = filter(copy(file), 'v:val =~ "^\\s*function\\s"')
|
||||
let arguments = copy(functions)
|
||||
call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\k\\+")')
|
||||
call map(functions, 'v:val."("')
|
||||
let functions = sort(functions)
|
||||
|
||||
" Create table to keep arguments for additional 'menu' info
|
||||
let b:js_menuinfo = {}
|
||||
for i in arguments
|
||||
let g:ia = i
|
||||
let f_elements = matchlist(i, 'function\s\+\(\k\+\)\s*(\(.\{-}\))')
|
||||
if len(f_elements) == 3
|
||||
let b:js_menuinfo[f_elements[1].'('] = f_elements[2]
|
||||
endif
|
||||
endfor
|
||||
|
||||
" Get functions arguments
|
||||
call map(arguments, 'matchstr(v:val, "function.\\{-}(\\zs.\\{-}\\ze)")')
|
||||
let jargs = join(arguments, ',')
|
||||
let jargs = substitute(jargs, '\s', '', 'g')
|
||||
let arguments = split(jargs, ',')
|
||||
let arguments = sort(arguments)
|
||||
|
||||
" Built-in functions
|
||||
let builtin = ['alert(', 'confirm(']
|
||||
|
||||
" Top-level HTML DOM objects
|
||||
let htmldom = ['document', 'anchor', 'area', 'base', 'body', 'document', 'event', 'form', 'frame', 'frameset', 'history', 'iframe', 'image', 'input', 'link', 'location', 'meta', 'navigator', 'object', 'option', 'screen', 'select', 'table', 'tableData', 'tableHeader', 'tableRow', 'textarea', 'window']
|
||||
call map(htmldom, 'v:val."."')
|
||||
|
||||
" Top-level properties
|
||||
let properties = ['decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent',
|
||||
\ 'eval', 'Infinity', 'isFinite', 'isNaN', 'NaN', 'Number', 'parseFloat',
|
||||
\ 'parseInt', 'String', 'undefined', 'escape', 'unescape']
|
||||
|
||||
" Keywords
|
||||
let keywords = ["Array", "Boolean", "Date", "Function", "Math", "Number", "Object", "RegExp", "String", "XMLHttpRequest", "ActiveXObject", "abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double ", "else", "enum", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in ", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super ", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with"]
|
||||
|
||||
let values = variables + functions + htmldom + arguments + builtin + properties + keywords
|
||||
|
||||
for m in values
|
||||
if m =~? '^'.a:base
|
||||
call add(res, m)
|
||||
elseif m =~? a:base
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
let menu = res + res2
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if item =~ '($'
|
||||
let kind = 'f'
|
||||
if has_key(b:js_menuinfo, item)
|
||||
let m_info = b:js_menuinfo[item]
|
||||
else
|
||||
let m_info = ''
|
||||
endif
|
||||
else
|
||||
let kind = 'v'
|
||||
let m_info = ''
|
||||
endif
|
||||
let final_menu += [{'word':item, 'menu':m_info, 'kind':kind}]
|
||||
endfor
|
||||
let g:fm = final_menu
|
||||
return final_menu
|
||||
|
||||
endfunction
|
||||
|
||||
" vim:set foldmethod=marker:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,13 @@
|
||||
" NetrwFileHandlers: contains various extension-based file handlers for
|
||||
" netrwFileHandlers: contains various extension-based file handlers for
|
||||
" netrw's browsers' x command ("eXecute launcher")
|
||||
" Author: Charles E. Campbell, Jr.
|
||||
" Date: Aug 15, 2005
|
||||
" Version: 6
|
||||
" Date: Oct 12, 2005
|
||||
" Version: 7
|
||||
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
" notice is copied with it. Like anything else that's free,
|
||||
" NetrwFileHandlers.vim is provided *as is* and comes with no
|
||||
" netrwFileHandlers.vim is provided *as is* and comes with no
|
||||
" warranty of any kind, either expressed or implied. In no
|
||||
" event will the copyright holder be liable for any damages
|
||||
" resulting from the use of this software.
|
||||
@@ -17,18 +17,27 @@
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Load Once: {{{1
|
||||
if exists("g:loaded_NetrwFileHandlers") || &cp
|
||||
if exists("g:loaded_netrwFileHandlers") || &cp
|
||||
finish
|
||||
endif
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
let g:loaded_NetrwFileHandlers= "v6"
|
||||
let g:loaded_netrwFileHandlers= "v7"
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_html: handles html when the user hits "x" when the {{{1
|
||||
" netrwFileHandlers#Init: {{{1
|
||||
" This functions is here to allow a call to this function to autoload
|
||||
" the netrwFileHandlers.vim file
|
||||
fun! netrwFileHandlers#Init()
|
||||
" call Dfunc("netrwFileHandlers#Init()")
|
||||
" call Dret("netrwFileHandlers#Init")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" netrwFileHandlers#NFH_html: handles html when the user hits "x" when the {{{1
|
||||
" cursor is atop a *.html file
|
||||
fun! NetrwFileHandler_html(pagefile)
|
||||
" call Dfunc("NetrwFileHandler_html(".a:pagefile.")")
|
||||
fun! netrwFileHandlers#NFH_html(pagefile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_html(".a:pagefile.")")
|
||||
|
||||
let page= substitute(a:pagefile,'^','file://','')
|
||||
|
||||
@@ -39,19 +48,19 @@ fun! NetrwFileHandler_html(pagefile)
|
||||
" call Decho("executing !netscape ".page)
|
||||
exe "!netscape \"".page.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_html 0")
|
||||
" call Dret("netrwFileHandlers#NFH_html 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_html 1")
|
||||
" call Dret("netrwFileHandlers#NFH_html 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_htm: handles html when the user hits "x" when the {{{1
|
||||
" netrwFileHandlers#NFH_htm: handles html when the user hits "x" when the {{{1
|
||||
" cursor is atop a *.htm file
|
||||
fun! NetrwFileHandler_htm(pagefile)
|
||||
" call Dfunc("NetrwFileHandler_htm(".a:pagefile.")")
|
||||
fun! netrwFileHandlers#NFH_htm(pagefile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_htm(".a:pagefile.")")
|
||||
|
||||
let page= substitute(a:pagefile,'^','file://','')
|
||||
|
||||
@@ -62,18 +71,18 @@ fun! NetrwFileHandler_htm(pagefile)
|
||||
" call Decho("executing !netscape ".page)
|
||||
exe "!netscape \"".page.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_htm 0")
|
||||
" call Dret("netrwFileHandlers#NFH_htm 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_htm 1")
|
||||
" call Dret("netrwFileHandlers#NFH_htm 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_jpg: {{{1
|
||||
fun! NetrwFileHandler_jpg(jpgfile)
|
||||
" call Dfunc("NetrwFileHandler_jpg(jpgfile<".a:jpgfile.">)")
|
||||
" netrwFileHandlers#NFH_jpg: {{{1
|
||||
fun! netrwFileHandlers#NFH_jpg(jpgfile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_jpg(jpgfile<".a:jpgfile.">)")
|
||||
|
||||
if executable("gimp")
|
||||
exe "silent! !gimp -s ".a:jpgfile
|
||||
@@ -81,156 +90,156 @@ fun! NetrwFileHandler_jpg(jpgfile)
|
||||
" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
|
||||
exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_jpg 0")
|
||||
" call Dret("netrwFileHandlers#NFH_jpg 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_jpg 1")
|
||||
" call Dret("netrwFileHandlers#NFH_jpg 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_gif: {{{1
|
||||
fun! NetrwFileHandler_gif(giffile)
|
||||
" call Dfunc("NetrwFileHandler_gif(giffile<".a:giffile.">)")
|
||||
" netrwFileHandlers#NFH_gif: {{{1
|
||||
fun! netrwFileHandlers#NFH_gif(giffile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_gif(giffile<".a:giffile.">)")
|
||||
|
||||
if executable("gimp")
|
||||
exe "silent! !gimp -s ".a:giffile
|
||||
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
|
||||
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_gif 0")
|
||||
" call Dret("netrwFileHandlers#NFH_gif 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_gif 1")
|
||||
" call Dret("netrwFileHandlers#NFH_gif 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_png: {{{1
|
||||
fun! NetrwFileHandler_png(pngfile)
|
||||
" call Dfunc("NetrwFileHandler_png(pngfile<".a:pngfile.">)")
|
||||
" netrwFileHandlers#NFH_png: {{{1
|
||||
fun! netrwFileHandlers#NFH_png(pngfile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_png(pngfile<".a:pngfile.">)")
|
||||
|
||||
if executable("gimp")
|
||||
exe "silent! !gimp -s ".a:pngfile
|
||||
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
|
||||
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_png 0")
|
||||
" call Dret("netrwFileHandlers#NFH_png 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_png 1")
|
||||
" call Dret("netrwFileHandlers#NFH_png 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_pnm: {{{1
|
||||
fun! NetrwFileHandler_pnm(pnmfile)
|
||||
" call Dfunc("NetrwFileHandler_pnm(pnmfile<".a:pnmfile.">)")
|
||||
" netrwFileHandlers#NFH_pnm: {{{1
|
||||
fun! netrwFileHandlers#NFH_pnm(pnmfile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_pnm(pnmfile<".a:pnmfile.">)")
|
||||
|
||||
if executable("gimp")
|
||||
exe "silent! !gimp -s ".a:pnmfile
|
||||
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
|
||||
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_pnm 0")
|
||||
" call Dret("netrwFileHandlers#NFH_pnm 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_pnm 1")
|
||||
" call Dret("netrwFileHandlers#NFH_pnm 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_bmp: visualize bmp files {{{1
|
||||
fun! NetrwFileHandler_bmp(bmpfile)
|
||||
" call Dfunc("NetrwFileHandler_bmp(bmpfile<".a:bmpfile.">)")
|
||||
" netrwFileHandlers#NFH_bmp: visualize bmp files {{{1
|
||||
fun! netrwFileHandlers#NFH_bmp(bmpfile)
|
||||
" call Dfunc("netrwFileHandlers#NFH_bmp(bmpfile<".a:bmpfile.">)")
|
||||
|
||||
if executable("gimp")
|
||||
exe "silent! !gimp -s ".a:bmpfile
|
||||
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
|
||||
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
|
||||
else
|
||||
" call Dret("NetrwFileHandler_bmp 0")
|
||||
" call Dret("netrwFileHandlers#NFH_bmp 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_bmp 1")
|
||||
" call Dret("netrwFileHandlers#NFH_bmp 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_pdf: visualize pdf files {{{1
|
||||
fun! NetrwFileHandler_pdf(pdf)
|
||||
" " call Dfunc("NetrwFileHandler_pdf(pdf<".a:pdf.">)")
|
||||
" netrwFileHandlers#NFH_pdf: visualize pdf files {{{1
|
||||
fun! netrwFileHandlers#NFH_pdf(pdf)
|
||||
" " call Dfunc("netrwFileHandlers#NFH_pdf(pdf<".a:pdf.">)")
|
||||
if executable("gs")
|
||||
exe 'silent! !gs "'.a:pdf.'"'
|
||||
else
|
||||
" " call Dret("NetrwFileHandler_pdf 0")
|
||||
" " call Dret("netrwFileHandlers#NFH_pdf 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" " call Dret("NetrwFileHandler_pdf 1")
|
||||
" " call Dret("netrwFileHandlers#NFH_pdf 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_doc: visualize doc files {{{1
|
||||
fun! NetrwFileHandler_doc(doc)
|
||||
" " call Dfunc("NetrwFileHandler_doc(doc<".a:doc.">)")
|
||||
" netrwFileHandlers#NFH_doc: visualize doc files {{{1
|
||||
fun! netrwFileHandlers#NFH_doc(doc)
|
||||
" " call Dfunc("netrwFileHandlers#NFH_doc(doc<".a:doc.">)")
|
||||
|
||||
if executable("oowriter")
|
||||
exe 'silent! !oowriter "'.a:doc.'"'
|
||||
redraw!
|
||||
else
|
||||
" " call Dret("NetrwFileHandler_doc 0")
|
||||
" " call Dret("netrwFileHandlers#NFH_doc 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" " call Dret("NetrwFileHandler_doc 1")
|
||||
" " call Dret("netrwFileHandlers#NFH_doc 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_sxw: visualize sxw files {{{1
|
||||
fun! NetrwFileHandler_sxw(sxw)
|
||||
" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
|
||||
" netrwFileHandlers#NFH_sxw: visualize sxw files {{{1
|
||||
fun! netrwFileHandlers#NFH_sxw(sxw)
|
||||
" " call Dfunc("netrwFileHandlers#NFH_sxw(sxw<".a:sxw.">)")
|
||||
|
||||
if executable("oowriter")
|
||||
exe 'silent! !oowriter "'.a:sxw.'"'
|
||||
redraw!
|
||||
else
|
||||
" " call Dret("NetrwFileHandler_sxw 0")
|
||||
" " call Dret("netrwFileHandlers#NFH_sxw 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" " call Dret("NetrwFileHandler_sxw 1")
|
||||
" " call Dret("netrwFileHandlers#NFH_sxw 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_xls: visualize xls files {{{1
|
||||
fun! NetrwFileHandler_xls(xls)
|
||||
" " call Dfunc("NetrwFileHandler_xls(xls<".a:xls.">)")
|
||||
" netrwFileHandlers#NFH_xls: visualize xls files {{{1
|
||||
fun! netrwFileHandlers#NFH_xls(xls)
|
||||
" " call Dfunc("netrwFileHandlers#NFH_xls(xls<".a:xls.">)")
|
||||
|
||||
if executable("oocalc")
|
||||
exe 'silent! !oocalc "'.a:xls.'"'
|
||||
redraw!
|
||||
else
|
||||
" " call Dret("NetrwFileHandler_xls 0")
|
||||
" " call Dret("netrwFileHandlers#NFH_xls 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" " call Dret("NetrwFileHandler_xls 1")
|
||||
" " call Dret("netrwFileHandlers#NFH_xls 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_ps: handles PostScript files {{{1
|
||||
fun! NetrwFileHandler_ps(ps)
|
||||
" call Dfunc("NetrwFileHandler_ps()")
|
||||
" netrwFileHandlers#NFH_ps: handles PostScript files {{{1
|
||||
fun! netrwFileHandlers#NFH_ps(ps)
|
||||
" call Dfunc("netrwFileHandlers#NFH_ps()")
|
||||
if executable("gs")
|
||||
exe "silent! !gs ".a:ps
|
||||
redraw!
|
||||
@@ -244,18 +253,18 @@ fun! NetrwFileHandler_ps(ps)
|
||||
exe "silent! !gswin32 \"".a:ps.'"'
|
||||
redraw!
|
||||
else
|
||||
" call Dret("NetrwFileHandler_ps 0")
|
||||
" call Dret("netrwFileHandlers#NFH_ps 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_ps 1")
|
||||
" call Dret("netrwFileHandlers#NFH_ps 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_eps: handles encapsulated PostScript files {{{1
|
||||
fun! NetrwFileHandler_eps(eps)
|
||||
" call Dfunc("NetrwFileHandler_ps()")
|
||||
" netrwFileHandlers#NFH_eps: handles encapsulated PostScript files {{{1
|
||||
fun! netrwFileHandlers#NFH_eps(eps)
|
||||
" call Dfunc("netrwFileHandlers#NFH_ps()")
|
||||
if executable("gs")
|
||||
exe "silent! !gs ".a:eps
|
||||
redraw!
|
||||
@@ -269,40 +278,40 @@ fun! NetrwFileHandler_eps(eps)
|
||||
exe "silent! !gswin32 \"".a:eps.'"'
|
||||
redraw!
|
||||
else
|
||||
" call Dret("NetrwFileHandler_ps 0")
|
||||
" call Dret("netrwFileHandlers#NFH_ps 0")
|
||||
return 0
|
||||
endif
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_fig: handles xfig files {{{1
|
||||
fun! NetrwFileHandler_fig(fig)
|
||||
" call Dfunc("NetrwFileHandler_fig()")
|
||||
" netrwFileHandlers#NFH_fig: handles xfig files {{{1
|
||||
fun! netrwFileHandlers#NFH_fig(fig)
|
||||
" call Dfunc("netrwFileHandlers#NFH_fig()")
|
||||
if executable("xfig")
|
||||
exe "silent! !xfig ".a:fig
|
||||
redraw!
|
||||
else
|
||||
" call Dret("NetrwFileHandler_fig 0")
|
||||
" call Dret("netrwFileHandlers#NFH_fig 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_fig 1")
|
||||
" call Dret("netrwFileHandlers#NFH_fig 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwFileHandler_obj: handles tgif's obj files {{{1
|
||||
fun! NetrwFileHandler_obj(obj)
|
||||
" call Dfunc("NetrwFileHandler_obj()")
|
||||
" netrwFileHandlers#NFH_obj: handles tgif's obj files {{{1
|
||||
fun! netrwFileHandlers#NFH_obj(obj)
|
||||
" call Dfunc("netrwFileHandlers#NFH_obj()")
|
||||
if has("unix") && executable("tgif")
|
||||
exe "silent! !tgif ".a:obj
|
||||
redraw!
|
||||
else
|
||||
" call Dret("NetrwFileHandler_obj 0")
|
||||
" call Dret("netrwFileHandlers#NFH_obj 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" call Dret("NetrwFileHandler_obj 1")
|
||||
" call Dret("netrwFileHandlers#NFH_obj 1")
|
||||
return 1
|
||||
endfun
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
" NetrwSettings.vim: makes netrw settings simpler
|
||||
" Last Change: Aug 16, 2005
|
||||
" netrwSettings.vim: makes netrw settings simpler
|
||||
" Date: Jan 26, 2006
|
||||
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
|
||||
" Version: 3
|
||||
" Version: 6a ASTRO-ONLY
|
||||
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
" notice is copied with it. Like anything else that's free,
|
||||
" NetrwSettings.vim is provided *as is* and comes with no
|
||||
" netrwSettings.vim is provided *as is* and comes with no
|
||||
" warranty of any kind, either expressed or implied. By using
|
||||
" this plugin, you agree that in no event will the copyright
|
||||
" holder be liable for any damages resulting from the use
|
||||
@@ -16,16 +16,20 @@
|
||||
" synagogues, preaching the gospel of the kingdom, and healing
|
||||
" every disease and every sickness among the people.
|
||||
" Load Once: {{{1
|
||||
if exists("g:loaded_NetrwSettings") || &cp
|
||||
if exists("g:loaded_netrwSettings") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_NetrwSettings = "v3"
|
||||
let g:loaded_netrwSettings = "v6a"
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwSettings: {{{1
|
||||
fun! NetrwSettings#NetrwSettings()
|
||||
fun! netrwSettings#NetrwSettings()
|
||||
" this call is here largely just to insure that netrw has been loaded
|
||||
call netrw#NetSavePosn()
|
||||
if !exists("g:loaded_netrw")
|
||||
echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None
|
||||
return
|
||||
endif
|
||||
|
||||
above wincmd s
|
||||
enew
|
||||
@@ -52,10 +56,10 @@ fun! NetrwSettings#NetrwSettings()
|
||||
let g:netrw_ignorenetrc= 0
|
||||
endif
|
||||
|
||||
put ='+ ---------------------------------------------'
|
||||
put ='+ NetrwSettings: (by Charles E. Campbell, Jr.)'
|
||||
put ='+ --------------------------------------------'
|
||||
put ='+ NetrwSettings: by Charles E. Campbell, Jr.'
|
||||
put ='+ Press ? with cursor atop any line for help '
|
||||
put ='+ ---------------------------------------------'
|
||||
put ='+ --------------------------------------------'
|
||||
let s:netrw_settings_stop= line(".")
|
||||
|
||||
put =''
|
||||
@@ -68,6 +72,7 @@ fun! NetrwSettings#NetrwSettings()
|
||||
put = 'let g:netrw_rsync_cmd = '.g:netrw_rsync_cmd
|
||||
put = 'let g:netrw_scp_cmd = '.g:netrw_scp_cmd
|
||||
put = 'let g:netrw_sftp_cmd = '.g:netrw_sftp_cmd
|
||||
put = 'let g:netrw_ssh_cmd = '.g:netrw_ssh_cmd
|
||||
let s:netrw_protocol_stop= line(".")
|
||||
put = ''
|
||||
|
||||
@@ -84,13 +89,18 @@ fun! NetrwSettings#NetrwSettings()
|
||||
put ='+ Netrw Browser Control'
|
||||
put = 'let g:netrw_alto = '.g:netrw_alto
|
||||
put = 'let g:netrw_altv = '.g:netrw_altv
|
||||
put = 'let g:netrw_browse_split = '.g:netrw_browse_split
|
||||
if exists("g:netrw_browsex_viewer")
|
||||
put = 'let g:netrw_browsex_viewer = '.g:netrw_browsex_viewer
|
||||
else
|
||||
put = 'let g:netrw_browsex_viewer = (not defined)'
|
||||
endif
|
||||
put = 'let g:netrw_dirhistmax = '.g:netrw_dirhistmax
|
||||
put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
|
||||
put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd
|
||||
put = 'let g:netrw_hide = '.g:netrw_hide
|
||||
put = 'let g:netrw_keepdir = '.g:netrw_keepdir
|
||||
put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd
|
||||
put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd
|
||||
put = 'let g:netrw_list_hide = '.g:netrw_list_hide
|
||||
put = 'let g:netrw_local_mkdir = '.g:netrw_local_mkdir
|
||||
put = 'let g:netrw_local_rmdir = '.g:netrw_local_rmdir
|
||||
351
runtime/autoload/pycomplete.vim
Normal file
351
runtime/autoload/pycomplete.vim
Normal file
@@ -0,0 +1,351 @@
|
||||
"pycomplete.vim - Omni Completion for python
|
||||
" Maintainer: Aaron Griffin
|
||||
" Version: 0.3
|
||||
" Last Updated: 23 January 2006
|
||||
"
|
||||
" v0.3 Changes:
|
||||
" added top level def parsing
|
||||
" for safety, call returns are not evaluated
|
||||
" handful of parsing changes
|
||||
" trailing ( and . characters
|
||||
" argument completion on open parens
|
||||
" stop parsing at current line - ++performance, local var resolution
|
||||
"
|
||||
" TODO
|
||||
" RExec subclass
|
||||
" Code cleanup + make class
|
||||
" use internal dict, not globals()
|
||||
|
||||
if !has('python')
|
||||
echo "Error: Required vim compiled with +python"
|
||||
finish
|
||||
endif
|
||||
|
||||
function! pycomplete#Complete(findstart, base)
|
||||
"findstart = 1 when we need to get the text length
|
||||
if a:findstart
|
||||
let line = getline('.')
|
||||
let idx = col('.')
|
||||
while idx > 0
|
||||
let idx -= 1
|
||||
let c = line[idx-1]
|
||||
if c =~ '\w'
|
||||
continue
|
||||
elseif ! c =~ '\.'
|
||||
idx = -1
|
||||
break
|
||||
else
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
return idx
|
||||
"findstart = 0 when we need to return the list of completions
|
||||
else
|
||||
execute "python get_completions('" . a:base . "')"
|
||||
return g:pycomplete_completions
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:DefPython()
|
||||
python << PYTHONEOF
|
||||
import vim, sys, types
|
||||
import __builtin__
|
||||
import tokenize, keyword, cStringIO
|
||||
|
||||
LOCALDEFS = \
|
||||
['LOCALDEFS', 'clean_up','eval_source_code', \
|
||||
'get_completions', '__builtin__', '__builtins__', \
|
||||
'dbg', '__name__', 'vim', 'sys', 'parse_to_end', \
|
||||
'parse_statement', 'tokenize', 'keyword', 'cStringIO', \
|
||||
'debug_level', 'safe_eval', '_ctor', 'get_arguments', \
|
||||
'strip_calls', 'types', 'parse_block']
|
||||
|
||||
def dbg(level,msg):
|
||||
debug_level = 1
|
||||
try:
|
||||
debug_level = vim.eval("g:pycomplete_debug_level")
|
||||
except:
|
||||
pass
|
||||
if level <= debug_level: print(msg)
|
||||
|
||||
def strip_calls(stmt):
|
||||
parsed=''
|
||||
level = 0
|
||||
for c in stmt:
|
||||
if c in ['[','(']:
|
||||
level += 1
|
||||
elif c in [')',']']:
|
||||
level -= 1
|
||||
elif level == 0:
|
||||
parsed += c
|
||||
##dbg(10,"stripped: %s" % parsed)
|
||||
return parsed
|
||||
|
||||
def get_completions(base):
|
||||
stmt = vim.eval('expand("<cWORD>")')
|
||||
#dbg(1,"statement: %s - %s" % (stmt, base))
|
||||
stmt = stmt+base
|
||||
eval_source_code()
|
||||
|
||||
try:
|
||||
ridx = stmt.rfind('.')
|
||||
if stmt[-1] == '(':
|
||||
match = ""
|
||||
stmt = strip_calls(stmt[:len(stmt)-1])
|
||||
all = get_arguments(eval(stmt))
|
||||
elif ridx == -1:
|
||||
match = stmt
|
||||
all = globals() + __builtin__.__dict__
|
||||
else:
|
||||
match = stmt[ridx+1:]
|
||||
stmt = strip_calls(stmt[:ridx])
|
||||
all = eval(stmt).__dict__
|
||||
|
||||
#dbg(15,"completions for: %s, match=%s" % (stmt,match))
|
||||
completions = []
|
||||
if type(all) == types.DictType:
|
||||
for m in all:
|
||||
if m.find('_') != 0 and m.find(match) == 0 and \
|
||||
m not in LOCALDEFS:
|
||||
#dbg(25,"matched... %s, %s" % (m, m.find(match)))
|
||||
typestr = str(all[m])
|
||||
if "function" in typestr: m += '('
|
||||
elif "method" in typestr: m += '('
|
||||
elif "module" in typestr: m += '.'
|
||||
elif "class" in typestr: m += '('
|
||||
completions.append(m)
|
||||
completions.sort()
|
||||
else:
|
||||
completions.append(all)
|
||||
#dbg(10,"all completions: %s" % completions)
|
||||
vim.command("let g:pycomplete_completions = %s" % completions)
|
||||
except:
|
||||
vim.command("let g:pycomplete_completions = []")
|
||||
#dbg(1,"exception: %s" % sys.exc_info()[1])
|
||||
clean_up()
|
||||
|
||||
def get_arguments(func_obj):
|
||||
def _ctor(obj):
|
||||
try:
|
||||
return class_ob.__init__.im_func
|
||||
except AttributeError:
|
||||
for base in class_ob.__bases__:
|
||||
rc = _find_constructor(base)
|
||||
if rc is not None: return rc
|
||||
return None
|
||||
|
||||
arg_offset = 1
|
||||
if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj)
|
||||
elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func
|
||||
else: arg_offset = 0
|
||||
|
||||
#dbg(20,"%s, offset=%s" % (str(func_obj), arg_offset))
|
||||
|
||||
arg_text = ''
|
||||
if type(func_obj) in [types.FunctionType, types.LambdaType]:
|
||||
try:
|
||||
cd = func_obj.func_code
|
||||
real_args = cd.co_varnames[arg_offset:cd.co_argcount]
|
||||
defaults = func_obj.func_defaults or []
|
||||
defaults = list(map(lambda name: "=%s" % name, defaults))
|
||||
defaults = [""] * (len(real_args)-len(defaults)) + defaults
|
||||
items = map(lambda a,d: a+d, real_args, defaults)
|
||||
if func_obj.func_code.co_flags & 0x4:
|
||||
items.append("...")
|
||||
if func_obj.func_code.co_flags & 0x8:
|
||||
items.append("***")
|
||||
arg_text = ", ".join(items) + ')'
|
||||
|
||||
except:
|
||||
#dbg(1,"exception: %s" % sys.exc_info()[1])
|
||||
pass
|
||||
if len(arg_text) == 0:
|
||||
# The doc string sometimes contains the function signature
|
||||
# this works for alot of C modules that are part of the
|
||||
# standard library
|
||||
doc = getattr(func_obj, '__doc__', '')
|
||||
if doc:
|
||||
doc = doc.lstrip()
|
||||
pos = doc.find('\n')
|
||||
if pos > 0:
|
||||
sigline = doc[:pos]
|
||||
lidx = sigline.find('(')
|
||||
ridx = sigline.find(')')
|
||||
retidx = sigline.find('->')
|
||||
ret = sigline[retidx+2:].strip()
|
||||
if lidx > 0 and ridx > 0:
|
||||
arg_text = sigline[lidx+1:ridx] + ')'
|
||||
if len(ret) > 0: arg_text += ' #returns %s' % ret
|
||||
#dbg(15,"argument completion: %s" % arg_text)
|
||||
return arg_text
|
||||
|
||||
def parse_to_end(gen):
|
||||
stmt=''
|
||||
level = 0
|
||||
for type, str, begin, end, line in gen:
|
||||
if line == vim.eval('getline(\'.\')'): break
|
||||
elif str == '\\': continue
|
||||
elif str == ';':
|
||||
break
|
||||
elif type == tokenize.NEWLINE and level == 0:
|
||||
break
|
||||
elif str in ['[','(']:
|
||||
level += 1
|
||||
elif str in [')',']']:
|
||||
level -= 1
|
||||
elif level == 0:
|
||||
stmt += str
|
||||
#dbg(10,"current statement: %s" % stmt)
|
||||
return stmt
|
||||
|
||||
def parse_block(gen):
|
||||
lines = []
|
||||
level = 0
|
||||
for type, str, begin, end, line in gen:
|
||||
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
|
||||
elif type == tokenize.INDENT:
|
||||
level += 1
|
||||
elif type == tokenize.DEDENT:
|
||||
level -= 1
|
||||
if level == 0: break;
|
||||
else:
|
||||
stmt = parse_statement(gen,str)
|
||||
if len(stmt) > 0: lines.append(stmt)
|
||||
return lines
|
||||
|
||||
def parse_statement(gen,curstr=''):
|
||||
var = curstr
|
||||
type, str, begin, end, line = gen.next()
|
||||
if str == '=':
|
||||
type, str, begin, end, line = gen.next()
|
||||
if type == tokenize.NEWLINE:
|
||||
return ''
|
||||
elif type == tokenize.STRING or str == 'str':
|
||||
return '%s = str' % var
|
||||
elif str == '[' or str == 'list':
|
||||
return '%s= list' % var
|
||||
elif str == '{' or str == 'dict':
|
||||
return '%s = dict' % var
|
||||
elif type == tokenize.NUMBER:
|
||||
return '%s = 0' % var
|
||||
elif str == 'Set':
|
||||
return '%s = Set' % var
|
||||
elif str == 'open' or str == 'file':
|
||||
return '%s = file' % var
|
||||
else:
|
||||
inst = str + parse_to_end(gen)
|
||||
if len(inst) > 0:
|
||||
#dbg(5,"found [%s = %s]" % (var, inst))
|
||||
return '%s = %s' % (var, inst)
|
||||
return ''
|
||||
|
||||
def eval_source_code():
|
||||
LINE=vim.eval('getline(\'.\')')
|
||||
s = cStringIO.StringIO('\n'.join(vim.current.buffer[:]) + '\n')
|
||||
g = tokenize.generate_tokens(s.readline)
|
||||
|
||||
stmts = []
|
||||
lineNo = 0
|
||||
try:
|
||||
for type, str, begin, end, line in g:
|
||||
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
|
||||
elif begin[0] == lineNo: continue
|
||||
#junk
|
||||
elif type == tokenize.INDENT or \
|
||||
type == tokenize.DEDENT or \
|
||||
type == tokenize.ERRORTOKEN or \
|
||||
type == tokenize.ENDMARKER or \
|
||||
type == tokenize.NEWLINE or \
|
||||
type == tokenize.COMMENT:
|
||||
continue
|
||||
#import statement
|
||||
elif str == 'import':
|
||||
import_stmt=parse_to_end(g)
|
||||
if len(import_stmt) > 0:
|
||||
#dbg(5,"found [import %s]" % import_stmt)
|
||||
stmts.append("import %s" % import_stmt)
|
||||
#import from statement
|
||||
elif str == 'from':
|
||||
type, str, begin, end, line = g.next()
|
||||
mod = str
|
||||
|
||||
type, str, begin, end, line = g.next()
|
||||
if str != "import": break
|
||||
from_stmt=parse_to_end(g)
|
||||
if len(from_stmt) > 0:
|
||||
#dbg(5,"found [from %s import %s]" % (mod, from_stmt))
|
||||
stmts.append("from %s import %s" % (mod, from_stmt))
|
||||
#def statement
|
||||
elif str == 'def':
|
||||
funcstr = ''
|
||||
for type, str, begin, end, line in g:
|
||||
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
|
||||
elif str == ':':
|
||||
stmts += parse_block(g)
|
||||
break
|
||||
funcstr += str
|
||||
if len(funcstr) > 0:
|
||||
#dbg(5,"found [def %s]" % funcstr)
|
||||
stmts.append("def %s:\n pass" % funcstr)
|
||||
#class declaration
|
||||
elif str == 'class':
|
||||
type, str, begin, end, line = g.next()
|
||||
classname = str
|
||||
#dbg(5,"found [class %s]" % classname)
|
||||
|
||||
level = 0
|
||||
members = []
|
||||
for type, str, begin, end, line in g:
|
||||
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
|
||||
elif type == tokenize.INDENT:
|
||||
level += 1
|
||||
elif type == tokenize.DEDENT:
|
||||
level -= 1
|
||||
if level == 0: break;
|
||||
elif str == 'def':
|
||||
memberstr = ''
|
||||
for type, str, begin, end, line in g:
|
||||
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
|
||||
elif str == ':':
|
||||
stmts += parse_block(g)
|
||||
break
|
||||
memberstr += str
|
||||
#dbg(5," member [%s]" % memberstr)
|
||||
members.append(memberstr)
|
||||
classstr = 'class %s:' % classname
|
||||
for m in members:
|
||||
classstr += ("\n def %s:\n pass" % m)
|
||||
stmts.append("%s\n" % classstr)
|
||||
elif keyword.iskeyword(str) or str in globals():
|
||||
#dbg(5,"keyword = %s" % str)
|
||||
lineNo = begin[0]
|
||||
else:
|
||||
assign = parse_statement(g,str)
|
||||
if len(assign) > 0: stmts.append(assign)
|
||||
|
||||
for s in stmts:
|
||||
try:
|
||||
#dbg(15,"evaluating: %s\n" % s)
|
||||
exec(s) in globals()
|
||||
except:
|
||||
#dbg(1,"exception: %s" % sys.exc_info()[1])
|
||||
pass
|
||||
except:
|
||||
#dbg(1,"exception: %s" % sys.exc_info()[1])
|
||||
pass
|
||||
|
||||
def clean_up():
|
||||
for o in globals().keys():
|
||||
if o not in LOCALDEFS:
|
||||
try:
|
||||
exec('del %s' % o) in globals()
|
||||
except: pass
|
||||
|
||||
sys.path.extend(['.','..'])
|
||||
PYTHONEOF
|
||||
endfunction
|
||||
|
||||
let g:pycomplete_debug_level = 0
|
||||
call s:DefPython()
|
||||
" vim: set et ts=4:
|
||||
111
runtime/autoload/spellfile.vim
Normal file
111
runtime/autoload/spellfile.vim
Normal file
@@ -0,0 +1,111 @@
|
||||
" Vim script to download a missing spell file
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2006 Feb 01
|
||||
|
||||
if !exists('g:spellfile_URL')
|
||||
let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/unstable/runtime/spell'
|
||||
endif
|
||||
let s:spellfile_URL = '' " Start with nothing so that s:donedict is reset.
|
||||
|
||||
" This function is used for the spellfile plugin.
|
||||
function! spellfile#LoadFile(lang)
|
||||
" If the netrw plugin isn't loaded we silently skip everything.
|
||||
if !exists(":Nread")
|
||||
if &verbose
|
||||
echomsg 'spellfile#LoadFile(): Nread command is not available.'
|
||||
endif
|
||||
return
|
||||
endif
|
||||
|
||||
" If the URL changes we try all files again.
|
||||
if s:spellfile_URL != g:spellfile_URL
|
||||
let s:donedict = {}
|
||||
let s:spellfile_URL = g:spellfile_URL
|
||||
endif
|
||||
|
||||
" I will say this only once!
|
||||
if has_key(s:donedict, a:lang . &enc)
|
||||
if &verbose
|
||||
echomsg 'spellfile#LoadFile(): Tried this language/encoding before.'
|
||||
endif
|
||||
return
|
||||
endif
|
||||
let s:donedict[a:lang . &enc] = 1
|
||||
|
||||
" Find spell directories we can write in.
|
||||
let dirlist = []
|
||||
let dirchoices = '&Cancel'
|
||||
for dir in split(globpath(&rtp, 'spell'), "\n")
|
||||
if filewritable(dir) == 2
|
||||
call add(dirlist, dir)
|
||||
let dirchoices .= "\n&" . len(dirlist)
|
||||
endif
|
||||
endfor
|
||||
if len(dirlist) == 0
|
||||
if &verbose
|
||||
echomsg 'spellfile#LoadFile(): There is no writable spell directory.'
|
||||
endif
|
||||
return
|
||||
endif
|
||||
|
||||
let msg = 'Cannot find spell file for "' . a:lang . '" in ' . &enc
|
||||
let msg .= "\nDo you want me to try downloading it?"
|
||||
if confirm(msg, "&Yes\n&No", 2) == 1
|
||||
let enc = &encoding
|
||||
if enc == 'iso-8859-15'
|
||||
let enc = 'latin1'
|
||||
endif
|
||||
let fname = a:lang . '.' . enc . '.spl'
|
||||
|
||||
" Split the window, read the file into a new buffer.
|
||||
new
|
||||
setlocal bin
|
||||
echo 'Downloading ' . fname . '...'
|
||||
exe 'Nread ' g:spellfile_URL . '/' . fname
|
||||
if getline(2) !~ 'VIMspell'
|
||||
" Didn't work, perhaps there is an ASCII one.
|
||||
g/^/d
|
||||
let fname = a:lang . '.ascii.spl'
|
||||
echo 'Could not find it, trying ' . fname . '...'
|
||||
exe 'Nread ' g:spellfile_URL . '/' . fname
|
||||
if getline(2) !~ 'VIMspell'
|
||||
echo 'Sorry, downloading failed'
|
||||
bwipe!
|
||||
return
|
||||
endif
|
||||
endif
|
||||
|
||||
" Delete the empty first line and mark the file unmodified.
|
||||
1d
|
||||
set nomod
|
||||
|
||||
let msg = "In which directory do you want to write the file:"
|
||||
for i in range(len(dirlist))
|
||||
let msg .= "\n" . (i + 1) . '. ' . dirlist[i]
|
||||
endfor
|
||||
let dirchoice = confirm(msg, dirchoices) - 2
|
||||
if dirchoice >= 0
|
||||
exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
|
||||
|
||||
" Also download the .sug file, if the user wants to.
|
||||
let msg = "Do you want me to try getting the .sug file?\n"
|
||||
let msg .= "This will improve making suggestions for spelling mistakes,\n"
|
||||
let msg .= "but it uses quite a bit of memory."
|
||||
if confirm(msg, "&No\n&Yes") == 2
|
||||
g/^/d
|
||||
let fname = substitute(fname, '\.spl$', '.sug', '')
|
||||
echo 'Downloading ' . fname . '...'
|
||||
exe 'Nread ' g:spellfile_URL . '/' . fname
|
||||
if getline(2) !~ 'VIMsug'
|
||||
echo 'Sorry, downloading failed'
|
||||
else
|
||||
1d
|
||||
exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
|
||||
endif
|
||||
set nomod
|
||||
endif
|
||||
endif
|
||||
|
||||
bwipe
|
||||
endif
|
||||
endfunc
|
||||
260
runtime/autoload/syntaxcomplete.vim
Normal file
260
runtime/autoload/syntaxcomplete.vim
Normal file
@@ -0,0 +1,260 @@
|
||||
" Vim completion script
|
||||
" Language: All languages, uses existing syntax highlighting rules
|
||||
" Maintainer: David Fishburn <fishburn@ianywhere.com>
|
||||
" Version: 1.1
|
||||
" Last Change: Wed Mar 01 2006 9:58:14 PM
|
||||
|
||||
" Set completion with CTRL-X CTRL-O to autoloaded function.
|
||||
if exists('+omnifunc')
|
||||
setlocal omnifunc=syntaxcomplete#Complete
|
||||
endif
|
||||
|
||||
if exists('g:loaded_syntax_completion')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntax_completion = 1
|
||||
|
||||
" This script will build a completion list based on the syntax
|
||||
" elements defined by the files in $VIMRUNTIME/syntax.
|
||||
|
||||
let s:syn_remove_words = 'match,matchgroup=,contains,'.
|
||||
\ 'links to,start=,end=,nextgroup='
|
||||
|
||||
let s:cache_name = []
|
||||
let s:cache_list = []
|
||||
|
||||
" This function is used for the 'omnifunc' option.
|
||||
function! syntaxcomplete#Complete(findstart, base)
|
||||
|
||||
if a:findstart
|
||||
" Locate the start of the item, including "."
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let lastword = -1
|
||||
while start > 0
|
||||
if line[start - 1] =~ '\w'
|
||||
let start -= 1
|
||||
elseif line[start - 1] =~ '\.'
|
||||
" The user must be specifying a column name
|
||||
if lastword == -1
|
||||
let lastword = start
|
||||
endif
|
||||
let start -= 1
|
||||
let b:sql_compl_type = 'column'
|
||||
else
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
" Return the column of the last word, which is going to be changed.
|
||||
" Remember the text that comes before it in s:prepended.
|
||||
if lastword == -1
|
||||
let s:prepended = ''
|
||||
return start
|
||||
endif
|
||||
let s:prepended = strpart(line, start, lastword - start)
|
||||
return lastword
|
||||
endif
|
||||
|
||||
let base = s:prepended . a:base
|
||||
|
||||
let list_idx = index(s:cache_name, &filetype, 0, &ignorecase)
|
||||
if list_idx > -1
|
||||
let compl_list = s:cache_list[list_idx]
|
||||
else
|
||||
let compl_list = OmniSyntaxList()
|
||||
let s:cache_name = add( s:cache_name, &filetype )
|
||||
let s:cache_list = add( s:cache_list, compl_list )
|
||||
endif
|
||||
|
||||
" Return list of matches.
|
||||
|
||||
if base =~ '\w'
|
||||
let compstr = join(compl_list, ' ')
|
||||
let compstr = substitute(compstr, '\<\%('.base.'\)\@!\w\+\s*', '', 'g')
|
||||
let compl_list = split(compstr, '\s\+')
|
||||
endif
|
||||
|
||||
return compl_list
|
||||
endfunc
|
||||
|
||||
function! OmniSyntaxList()
|
||||
let saveL = @l
|
||||
|
||||
" Loop through all the syntax groupnames, and build a
|
||||
" syntax file which contains these names. This can
|
||||
" work generically for any filetype that does not already
|
||||
" have a plugin defined.
|
||||
" This ASSUMES the syntax groupname BEGINS with the name
|
||||
" of the filetype. From my casual viewing of the vim7\syntax
|
||||
" directory.
|
||||
redir @l
|
||||
silent! exec 'syntax list '
|
||||
redir END
|
||||
|
||||
let syntax_full = "\n".@l
|
||||
let @l = saveL
|
||||
|
||||
if syntax_full =~ 'E28'
|
||||
\ || syntax_full =~ 'E411'
|
||||
\ || syntax_full =~ 'E415'
|
||||
\ || syntax_full =~ 'No Syntax items'
|
||||
return []
|
||||
endif
|
||||
|
||||
" Default the include group to include the requested syntax group
|
||||
let syntax_group_include_{&filetype} = ''
|
||||
" Check if there are any overrides specified for this filetype
|
||||
if exists('g:omni_syntax_group_include_'.&filetype)
|
||||
let syntax_group_include_{&filetype} =
|
||||
\ substitute( g:omni_syntax_group_include_{&filetype},'\s\+','','g')
|
||||
if syntax_group_include_{&filetype} =~ '\w'
|
||||
let syntax_group_include_{&filetype} =
|
||||
\ substitute( syntax_group_include_{&filetype},
|
||||
\ '\s*,\s*', '\\|', 'g'
|
||||
\ )
|
||||
endif
|
||||
endif
|
||||
|
||||
" Default the exclude group to nothing
|
||||
let syntax_group_exclude_{&filetype} = ''
|
||||
" Check if there are any overrides specified for this filetype
|
||||
if exists('g:omni_syntax_group_exclude_'.&filetype)
|
||||
let syntax_group_exclude_{&filetype} =
|
||||
\ substitute( g:omni_syntax_group_exclude_{&filetype},'\s\+','','g')
|
||||
if syntax_group_exclude_{&filetype} =~ '\w'
|
||||
let syntax_group_exclude_{&filetype} =
|
||||
\ substitute( syntax_group_exclude_{&filetype},
|
||||
\ '\s*,\s*', '\\|', 'g'
|
||||
\ )
|
||||
endif
|
||||
endif
|
||||
|
||||
" Syntax rules can contain items for more than just the current
|
||||
" filetype. They can contain additional items added by the user
|
||||
" via autocmds or their vimrc.
|
||||
" Some syntax files can be combined (html, php, jsp).
|
||||
" We want only items that begin with the filetype we are interested in.
|
||||
let next_group_regex = '\n' .
|
||||
\ '\zs'.&filetype.'\w\+\ze'.
|
||||
\ '\s\+xxx\s\+'
|
||||
let syn_list = ''
|
||||
let index = 0
|
||||
let index = match(syntax_full, next_group_regex, index)
|
||||
|
||||
while index > 0
|
||||
let group_name = matchstr( syntax_full, '\w\+', index )
|
||||
|
||||
let get_syn_list = 1
|
||||
" if syntax_group_include_{&filetype} == ''
|
||||
" if syntax_group_exclude_{&filetype} != ''
|
||||
" if '\<'.syntax_group_exclude_{&filetype}.'\>' =~ '\<'.group_name.'\>'
|
||||
" let get_syn_list = 0
|
||||
" endif
|
||||
" endif
|
||||
" else
|
||||
" if '\<'.syntax_group_include_{&filetype}.'\>' !~ '\<'.group_name.'\>'
|
||||
" let get_syn_list = 0
|
||||
" endif
|
||||
" endif
|
||||
if syntax_group_exclude_{&filetype} != ''
|
||||
if '\<'.syntax_group_exclude_{&filetype}.'\>' =~ '\<'.group_name.'\>'
|
||||
let get_syn_list = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
if get_syn_list == 1
|
||||
if syntax_group_include_{&filetype} != ''
|
||||
if '\<'.syntax_group_include_{&filetype}.'\>' !~ '\<'.group_name.'\>'
|
||||
let get_syn_list = 0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
if get_syn_list == 1
|
||||
" Pass in the full syntax listing, plus the group name we
|
||||
" are interested in.
|
||||
let extra_syn_list = s:SyntaxGroupItems(group_name, syntax_full)
|
||||
|
||||
let syn_list = syn_list . extra_syn_list . "\n"
|
||||
endif
|
||||
|
||||
let index = index + strlen(group_name)
|
||||
let index = match(syntax_full, next_group_regex, index)
|
||||
endwhile
|
||||
|
||||
" Convert the string to a List and sort it.
|
||||
let compl_list = sort(split(syn_list))
|
||||
|
||||
if &filetype == 'vim'
|
||||
let short_compl_list = []
|
||||
for i in range(len(compl_list))
|
||||
if i == len(compl_list)-1
|
||||
let next = i
|
||||
else
|
||||
let next = i + 1
|
||||
endif
|
||||
if compl_list[next] !~ '^'.compl_list[i].'.$'
|
||||
let short_compl_list += [compl_list[i]]
|
||||
endif
|
||||
endfor
|
||||
|
||||
return short_compl_list
|
||||
else
|
||||
return compl_list
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:SyntaxGroupItems( group_name, syntax_full )
|
||||
|
||||
let syn_list = ""
|
||||
|
||||
" From the full syntax listing, strip out the portion for the
|
||||
" request group.
|
||||
" Query:
|
||||
" \n - must begin with a newline
|
||||
" a:group_name - the group name we are interested in
|
||||
" \s\+xxx\s\+ - group names are always followed by xxx
|
||||
" \zs - start the match
|
||||
" .\{-} - everything ...
|
||||
" \ze - end the match
|
||||
" \n\w - at the first newline starting with a character
|
||||
let syntax_group = matchstr(a:syntax_full,
|
||||
\ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze'."\n".'\w'
|
||||
\)
|
||||
|
||||
if syntax_group != ""
|
||||
" let syn_list = substitute( @l, '^.*xxx\s*\%(contained\s*\)\?', "", '' )
|
||||
" let syn_list = substitute( @l, '^.*xxx\s*', "", '' )
|
||||
|
||||
" We only want the words for the lines begining with
|
||||
" containedin, but there could be other items.
|
||||
|
||||
" Tried to remove all lines that do not begin with contained
|
||||
" but this does not work in all cases since you can have
|
||||
" contained nextgroup=...
|
||||
" So this will strip off the ending of lines with known
|
||||
" keywords.
|
||||
let syn_list = substitute( syntax_group, '\<\('.
|
||||
\ substitute(
|
||||
\ escape( s:syn_remove_words, '\\/.*$^~[]')
|
||||
\ , ',', '\\|', 'g').
|
||||
\ '\).\{-}\%($\|'."\n".'\)'
|
||||
\ , "\n", 'g' )
|
||||
|
||||
" Now strip off the newline + blank space + contained
|
||||
let syn_list = substitute( syn_list, '\%(^\|\n\)\@<=\s*\<\('.
|
||||
\ 'contained\)'
|
||||
\ , "", 'g' )
|
||||
|
||||
" There are a number of items which have non-word characters in
|
||||
" them, *'T_F1'*. vim.vim is one such file.
|
||||
" This will replace non-word characters with spaces.
|
||||
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
|
||||
else
|
||||
let syn_list = ''
|
||||
endif
|
||||
|
||||
return syn_list
|
||||
endfunction
|
||||
|
||||
@@ -1,130 +1,333 @@
|
||||
" vim:set ts=8 sts=4 sw=4:
|
||||
" tar.vim: Handles browsing tarfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Dec 24, 2005
|
||||
" Version: 7
|
||||
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
|
||||
" License: Vim License (see vim's :help license)
|
||||
"
|
||||
" tar.vim -- a Vim plugin for browsing tarfiles
|
||||
" Copyright (c) 2002, Michael C. Toren <mct@toren.net>
|
||||
" Distributed under the GNU General Public License.
|
||||
" Contains many ideas from Michael Toren's <tar.vim>
|
||||
"
|
||||
" Version: 1.01
|
||||
" Last Change: 2005 Jul 26
|
||||
"
|
||||
" Updates are available from <http://michael.toren.net/code/>. If you
|
||||
" find this script useful, or have suggestions for improvements, please
|
||||
" let me know.
|
||||
" Also look there for further comments and documentation.
|
||||
"
|
||||
" This part defines the functions. The autocommands are in plugin/tar.vim.
|
||||
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
" notice is copied with it. Like anything else that's free,
|
||||
" tarPlugin.vim is provided *as is* and comes with no warranty
|
||||
" of any kind, either expressed or implied. By using this
|
||||
" plugin, you agree that in no event will the copyright
|
||||
" holder be liable for any damages resulting from the use
|
||||
" of this software.
|
||||
|
||||
let s:version = "1.01"
|
||||
" ---------------------------------------------------------------------
|
||||
" Initialization: {{{1
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
if exists("g:loaded_tar")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_tar= "v7"
|
||||
|
||||
function! tar#Write(argument)
|
||||
echo "ERROR: Sorry, no write support for tarfiles yet"
|
||||
endfunction
|
||||
" ---------------------------------------------------------------------
|
||||
" Default Settings: {{{1
|
||||
if !exists("g:tar_browseoptions")
|
||||
let g:tar_browseoptions= "Ptf"
|
||||
endif
|
||||
if !exists("g:tar_readoptions")
|
||||
let g:tar_readoptions= "OPxf"
|
||||
endif
|
||||
if !exists("g:tar_writeoptions")
|
||||
let g:tar_writeoptions= "uf"
|
||||
endif
|
||||
|
||||
function! tar#Read(argument, cleanup)
|
||||
let l:argument = a:argument
|
||||
let l:argument = substitute(l:argument, '^tarfile:', '', '')
|
||||
let l:argument = substitute(l:argument, '^\~', $HOME, '')
|
||||
" ----------------
|
||||
" Functions: {{{1
|
||||
" ----------------
|
||||
|
||||
let l:tarfile = l:argument
|
||||
while 1
|
||||
if (l:tarfile == "" || l:tarfile == "/")
|
||||
echo "ERROR: Could not find a readable tarfile in path:" l:argument
|
||||
return
|
||||
endif
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Browse: {{{2
|
||||
fun! tar#Browse(tarfile)
|
||||
" call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
if filereadable(l:tarfile) " found it!
|
||||
break
|
||||
endif
|
||||
" sanity checks
|
||||
if !executable("tar")
|
||||
echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse")
|
||||
return
|
||||
endif
|
||||
if !filereadable(a:tarfile)
|
||||
if a:tarfile !~# '^\a\+://'
|
||||
" if its an url, don't complain, let url-handlers such as vim do its thing
|
||||
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse : file<".a:tarfile."> not readable")
|
||||
return
|
||||
endif
|
||||
if &ma != 1
|
||||
set ma
|
||||
endif
|
||||
let w:tarfile= a:tarfile
|
||||
|
||||
let l:tarfile = fnamemodify(l:tarfile, ":h")
|
||||
endwhile
|
||||
setlocal noswapfile
|
||||
setlocal buftype=nofile
|
||||
setlocal bufhidden=hide
|
||||
setlocal nobuflisted
|
||||
setlocal nowrap
|
||||
set ft=tar
|
||||
|
||||
let l:toextract = strpart(l:argument, strlen(l:tarfile) + 1)
|
||||
" give header
|
||||
exe "$put ='".'\"'." tar.vim version ".g:loaded_tar."'"
|
||||
exe "$put ='".'\"'." Browsing tarfile ".a:tarfile."'"
|
||||
exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
|
||||
0d
|
||||
$
|
||||
|
||||
if (l:toextract == "")
|
||||
return
|
||||
if a:tarfile =~# '\.\(gz\|tgz\)$'
|
||||
exe "silent r! gzip -d -c '".a:tarfile."'| tar -".g:tar_browseoptions." - "
|
||||
elseif a:tarfile =~# '\.bz2$'
|
||||
exe "silent r! bzip2 -d -c '".a:tarfile."'| tar -".g:tar_browseoptions." - "
|
||||
else
|
||||
exe "silent r! tar -".g:tar_browseoptions." '".a:tarfile."'"
|
||||
endif
|
||||
silent %g@/$@d
|
||||
|
||||
setlocal noma nomod ro
|
||||
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" TarBrowseSelect: {{{2
|
||||
fun! s:TarBrowseSelect()
|
||||
" call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let fname= getline(".")
|
||||
" call Decho("fname<".fname.">")
|
||||
|
||||
" sanity check
|
||||
if fname =~ '^"'
|
||||
let &report= repkeep
|
||||
" call Dret("TarBrowseSelect")
|
||||
return
|
||||
endif
|
||||
|
||||
" about to make a new window, need to use w:tarfile
|
||||
let tarfile= w:tarfile
|
||||
let curfile= expand("%")
|
||||
|
||||
new
|
||||
wincmd _
|
||||
let s:tblfile_{winnr()}= curfile
|
||||
" call Decho("exe e tarfile:".tarfile.':'.fname)
|
||||
exe "e tarfile:".tarfile.':'.fname
|
||||
filetype detect
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Read: {{{2
|
||||
fun! tar#Read(fname,mode)
|
||||
" call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','')
|
||||
let fname = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','')
|
||||
" call Decho("tarfile<".tarfile."> fname<".fname.">")
|
||||
|
||||
if tarfile =~# '\.\(gz\|tgz\)$'
|
||||
" call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
|
||||
exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
|
||||
elseif tarfile =~# '\.bz2$'
|
||||
" call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'")
|
||||
exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
|
||||
else
|
||||
" call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'")
|
||||
exe "silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'"
|
||||
endif
|
||||
let w:tarfile= a:fname
|
||||
exe "file tarfile:".fname
|
||||
|
||||
" cleanup
|
||||
0d
|
||||
set nomod
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Read : w:tarfile<".w:tarfile.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" tar#Write: {{{2
|
||||
fun! tar#Write(fname)
|
||||
" call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
" sanity checks
|
||||
if !executable("tar")
|
||||
echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
return
|
||||
endif
|
||||
if !exists("*mkdir")
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
return
|
||||
endif
|
||||
|
||||
let curdir= getcwd()
|
||||
let tmpdir= tempname()
|
||||
" call Decho("orig tempname<".tmpdir.">")
|
||||
if tmpdir =~ '\.'
|
||||
let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
|
||||
endif
|
||||
" call Decho("tmpdir<".tmpdir.">")
|
||||
call mkdir(tmpdir,"p")
|
||||
|
||||
" attempt to change to the indicated directory
|
||||
try
|
||||
exe "cd ".escape(tmpdir,' \')
|
||||
catch /^Vim\%((\a\+)\)\=:E344/
|
||||
echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
return
|
||||
endtry
|
||||
" call Decho("current directory now: ".getcwd())
|
||||
|
||||
" place temporary files under .../_ZIPVIM_/
|
||||
if isdirectory("_ZIPVIM_")
|
||||
call s:Rmdir("_ZIPVIM_")
|
||||
endif
|
||||
call mkdir("_ZIPVIM_")
|
||||
cd _ZIPVIM_
|
||||
" call Decho("current directory now: ".getcwd())
|
||||
|
||||
let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\):.*$','\1','')
|
||||
let fname = substitute(w:tarfile,'tarfile:.\{-}:\(.*\)$','\1','')
|
||||
|
||||
" handle compressed archives
|
||||
if tarfile =~# '\.gz'
|
||||
call system("gzip -d ".tarfile)
|
||||
let tarfile = substitute(tarfile,'\.gz','','e')
|
||||
let compress= "gzip '".tarfile."'"
|
||||
elseif tarfile =~# '\.tgz'
|
||||
call system("gzip -d ".tarfile)
|
||||
let tarfile = substitute(tarfile,'\.tgz','.tar','e')
|
||||
let compress= "gzip '".tarfile."'"
|
||||
let tgz = 1
|
||||
elseif tarfile =~# '\.bz2'
|
||||
call system("bzip2 -d ".tarfile)
|
||||
let tarfile = substitute(tarfile,'\.bz2','','e')
|
||||
let compress= "bzip2 '".tarfile."'"
|
||||
endif
|
||||
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
else
|
||||
|
||||
" call Decho("tarfile<".tarfile."> fname<".fname.">")
|
||||
|
||||
if fname =~ '/'
|
||||
let dirpath = substitute(fname,'/[^/]\+$','','e')
|
||||
if executable("cygpath")
|
||||
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
|
||||
endif
|
||||
|
||||
let l:cat = s:TarCatCommand(l:tarfile)
|
||||
execute "r !" . l:cat . " < '" . l:tarfile . "'"
|
||||
\ " | tar OPxf - '" . l:toextract . "'"
|
||||
|
||||
if (a:cleanup)
|
||||
0d "blank line
|
||||
execute "doautocmd BufReadPost " . expand("%")
|
||||
setlocal readonly
|
||||
silent preserve
|
||||
call mkdir(dirpath,"p")
|
||||
endif
|
||||
if tarfile !~ '/'
|
||||
let tarfile= curdir.'/'.tarfile
|
||||
endif
|
||||
" call Decho("tarfile<".tarfile."> fname<".fname.">")
|
||||
|
||||
exe "w! ".fname
|
||||
if executable("cygpath")
|
||||
let tarfile = substitute(system("cygpath ".tarfile),'\n','','e')
|
||||
endif
|
||||
|
||||
" delete old file from tarfile
|
||||
" call Decho("tar --delete -f '".tarfile."' '".fname."'")
|
||||
call system("tar --delete -f '".tarfile."' '".fname."'")
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
else
|
||||
|
||||
" update tarfile with new file
|
||||
" call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
|
||||
call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
elseif exists("compress")
|
||||
" call Decho("call system(".compress.")")
|
||||
call system(compress)
|
||||
if exists("tgz")
|
||||
" call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
|
||||
call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
endif
|
||||
|
||||
function! tar#Browse(tarfile)
|
||||
setlocal noswapfile
|
||||
setlocal buftype=nofile
|
||||
setlocal bufhidden=hide
|
||||
setlocal filetype=
|
||||
setlocal nobuflisted
|
||||
setlocal buftype=nofile
|
||||
setlocal wrap
|
||||
setlocal syntax=tar
|
||||
" support writing tarfiles across a network
|
||||
if s:tblfile_{winnr()} =~ '^\a\+://'
|
||||
" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
|
||||
let tblfile= s:tblfile_{winnr()}
|
||||
1split|enew
|
||||
let binkeep= &binary
|
||||
let eikeep = &ei
|
||||
set binary ei=all
|
||||
exe "e! ".tarfile
|
||||
call netrw#NetWrite(tblfile)
|
||||
let &ei = eikeep
|
||||
let &binary = binkeep
|
||||
q!
|
||||
unlet s:tblfile_{winnr()}
|
||||
endif
|
||||
endif
|
||||
|
||||
" cleanup and restore current directory
|
||||
cd ..
|
||||
call s:Rmdir("_ZIPVIM_")
|
||||
exe "cd ".escape(curdir,' \')
|
||||
setlocal nomod
|
||||
|
||||
let l:tarfile = a:tarfile
|
||||
let b:tarfile = l:tarfile
|
||||
let l:cat = s:TarCatCommand(l:tarfile)
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
endfun
|
||||
|
||||
if ! filereadable(l:tarfile)
|
||||
let l:tarfile = substitute(l:tarfile, '^tarfile:', '', '')
|
||||
endif
|
||||
" ---------------------------------------------------------------------
|
||||
" Rmdir: {{{2
|
||||
fun! s:Rmdir(fname)
|
||||
" call Dfunc("Rmdir(fname<".a:fname.">)")
|
||||
if has("unix")
|
||||
call system("/bin/rm -rf ".a:fname)
|
||||
elseif has("win32") || has("win95") || has("win64") || has("win16")
|
||||
if &shell =~? "sh$"
|
||||
call system("/bin/rm -rf ".a:fname)
|
||||
else
|
||||
call system("del /S ".a:fname)
|
||||
endif
|
||||
endif
|
||||
" call Dret("Rmdir")
|
||||
endfun
|
||||
|
||||
if ! filereadable(l:tarfile)
|
||||
echo "ERROR: File not readable:" l:tarfile
|
||||
return
|
||||
endif
|
||||
|
||||
call s:Say("\" tar.vim version " . s:version)
|
||||
call s:Say("\" Browsing tarfile " . l:tarfile)
|
||||
call s:Say("\" Hit ENTER to view a file in a new window")
|
||||
call s:Say("")
|
||||
|
||||
silent execute "r!" . l:cat . "<'" . l:tarfile . "'| tar Ptf - "
|
||||
0d "blank line
|
||||
/^$/1
|
||||
|
||||
setlocal readonly
|
||||
setlocal nomodifiable
|
||||
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
|
||||
endfunction
|
||||
|
||||
function! s:TarBrowseSelect()
|
||||
let l:line = getline(".")
|
||||
|
||||
if (l:line =~ '^" ')
|
||||
return
|
||||
endif
|
||||
|
||||
if (l:line =~ '/$')
|
||||
echo "Please specify a file, not a directory"
|
||||
return
|
||||
endif
|
||||
|
||||
let l:selection = "tarfile:" . b:tarfile . "/" . l:line
|
||||
new
|
||||
wincmd _
|
||||
execute "e " . l:selection
|
||||
endfunction
|
||||
|
||||
" kludge to deal with compressed archives
|
||||
function! s:TarCatCommand(tarfile)
|
||||
if a:tarfile =~# '\.\(gz\|tgz\|Z\)$'
|
||||
let l:cat = "gzip -d -c"
|
||||
elseif a:tarfile =~# '\.bz2$'
|
||||
let l:cat = "bzip2 -d -c"
|
||||
else
|
||||
let l:cat = "cat"
|
||||
endif
|
||||
return l:cat
|
||||
endfunction
|
||||
|
||||
function! s:Say(string)
|
||||
let @" = a:string
|
||||
$ put
|
||||
endfunction
|
||||
" ------------------------------------------------------------------------
|
||||
" Modelines And Restoration: {{{1
|
||||
let &cpo= s:keepcpo
|
||||
unlet s:keepcpo
|
||||
" vim:ts=8 fdm=marker
|
||||
|
||||
502
runtime/autoload/xmlcomplete.vim
Normal file
502
runtime/autoload/xmlcomplete.vim
Normal file
@@ -0,0 +1,502 @@
|
||||
" Vim completion script
|
||||
" Language: XML
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2006 Feb 18
|
||||
|
||||
" This function will create Dictionary with users namespace strings and values
|
||||
" canonical (system) names of data files. Names should be lowercase,
|
||||
" descriptive to avoid any future conflicts. For example 'xhtml10s' should be
|
||||
" name for data of XHTML 1.0 Strict and 'xhtml10t' for XHTML 1.0 Transitional
|
||||
" User interface will be provided by XMLns command defined ...
|
||||
" Currently supported canonicals are:
|
||||
" xhtml10s - XHTML 1.0 Strict
|
||||
" xsl - XSL
|
||||
function! xmlcomplete#CreateConnection(canonical, ...)
|
||||
|
||||
" When only one argument provided treat name as default namespace (without
|
||||
" 'prefix:').
|
||||
if exists("a:1")
|
||||
let users = a:1
|
||||
else
|
||||
let users = 'DEFAULT'
|
||||
endif
|
||||
|
||||
" Source data file. Due to suspected errors in autoload do it with
|
||||
" :runtime.
|
||||
" TODO: make it properly (using autoload, that is) later
|
||||
exe "runtime autoload/xml/".a:canonical.".vim"
|
||||
|
||||
" Remove all traces of unexisting files to return [] when trying
|
||||
" omnicomplete something
|
||||
" TODO: give warning about non-existing canonicals - should it be?
|
||||
if !exists("g:xmldata_".a:canonical)
|
||||
unlet! g:xmldata_connection
|
||||
return 0
|
||||
endif
|
||||
|
||||
" We need to initialize Dictionary to add key-value pair
|
||||
if !exists("g:xmldata_connection")
|
||||
let g:xmldata_connection = {}
|
||||
endif
|
||||
|
||||
let g:xmldata_connection[users] = a:canonical
|
||||
|
||||
endfunction
|
||||
|
||||
function! xmlcomplete#CreateEntConnection(...)
|
||||
if a:0 > 0
|
||||
let g:xmldata_entconnect = a:1
|
||||
else
|
||||
let g:xmldata_entconnect = 'DEFAULT'
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! xmlcomplete#CompleteTags(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let curline = line('.')
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let compl_begin = col('.') - 2
|
||||
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|[:.-]\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
|
||||
if start >= 0 && line[start - 1] =~ '&'
|
||||
let b:entitiescompl = 1
|
||||
let b:compl_context = ''
|
||||
return start
|
||||
endif
|
||||
|
||||
let b:compl_context = getline('.')[0:(compl_begin)]
|
||||
if b:compl_context !~ '<[^>]*$'
|
||||
" Look like we may have broken tag. Check previous lines. Up to
|
||||
" 10?
|
||||
let i = 1
|
||||
while 1
|
||||
let context_line = getline(curline-i)
|
||||
if context_line =~ '<[^>]*$'
|
||||
" Yep, this is this line
|
||||
let context_lines = getline(curline-i, curline)
|
||||
let b:compl_context = join(context_lines, ' ')
|
||||
break
|
||||
elseif context_line =~ '>[^<]*$'
|
||||
" Normal tag line, no need for completion at all
|
||||
let b:compl_context = ''
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
" Make sure we don't have counter
|
||||
unlet! i
|
||||
endif
|
||||
let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
|
||||
|
||||
" Make sure we will have only current namespace
|
||||
unlet! b:xml_namespace
|
||||
let b:xml_namespace = matchstr(b:compl_context, '^<\zs\k*\ze:')
|
||||
if b:xml_namespace == ''
|
||||
let b:xml_namespace = 'DEFAULT'
|
||||
endif
|
||||
|
||||
return start
|
||||
|
||||
else
|
||||
" There is no connction of namespace and data file. Abandon action
|
||||
if !exists("g:xmldata_connection") || g:xmldata_connection == {}
|
||||
return []
|
||||
endif
|
||||
" Initialize base return lists
|
||||
let res = []
|
||||
let res2 = []
|
||||
" a:base is very short - we need context
|
||||
if len(b:compl_context) == 0 && !exists("b:entitiescompl")
|
||||
return []
|
||||
endif
|
||||
let context = matchstr(b:compl_context, '^<\zs.*')
|
||||
unlet! b:compl_context
|
||||
|
||||
" Make entities completion
|
||||
if exists("b:entitiescompl")
|
||||
unlet! b:entitiescompl
|
||||
|
||||
if !exists("g:xmldata_entconnect") || g:xmldata_entconnect == 'DEFAULT'
|
||||
let values = g:xmldata{'_'.g:xmldata_connection['DEFAULT']}['vimxmlentities']
|
||||
else
|
||||
let values = g:xmldata{'_'.g:xmldata_entconnect}['vimxmlentities']
|
||||
endif
|
||||
|
||||
" Get only lines with entity declarations but throw out
|
||||
" parameter-entities - they may be completed in future
|
||||
let entdecl = filter(getline(1, "$"), 'v:val =~ "<!ENTITY\\s\\+[^%]"')
|
||||
|
||||
if len(entdecl) > 0
|
||||
let intent = map(copy(entdecl), 'matchstr(v:val, "<!ENTITY\\s\\+\\zs\\(\\k\\|[.-:]\\)\\+\\ze")')
|
||||
let values = intent + values
|
||||
endif
|
||||
|
||||
if len(a:base) == 1
|
||||
for m in values
|
||||
if m =~ '^'.a:base
|
||||
call add(res, m.';')
|
||||
endif
|
||||
endfor
|
||||
return res
|
||||
else
|
||||
for m in values
|
||||
if m =~? '^'.a:base
|
||||
call add(res, m.';')
|
||||
elseif m =~? a:base
|
||||
call add(res2, m.';')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
endif
|
||||
|
||||
endif
|
||||
if context =~ '>'
|
||||
" Generally if context contains > it means we are outside of tag and
|
||||
" should abandon action
|
||||
return []
|
||||
endif
|
||||
|
||||
" find tags matching with "a:base"
|
||||
" If a:base contains white space it is attribute.
|
||||
" It could be also value of attribute...
|
||||
" We have to get first word to offer
|
||||
" proper completions
|
||||
if context == ''
|
||||
let tag = ''
|
||||
else
|
||||
let tag = split(context)[0]
|
||||
endif
|
||||
" Get rid of namespace
|
||||
let tag = substitute(tag, '^'.b:xml_namespace.':', '', '')
|
||||
|
||||
|
||||
" Get last word, it should be attr name
|
||||
let attr = matchstr(context, '.*\s\zs.*')
|
||||
" Possible situations where any prediction would be difficult:
|
||||
" 1. Events attributes
|
||||
if context =~ '\s'
|
||||
|
||||
" If attr contains =\s*[\"'] we catched value of attribute
|
||||
if attr =~ "=\s*[\"']"
|
||||
" Let do attribute specific completion
|
||||
let attrname = matchstr(attr, '.*\ze\s*=')
|
||||
let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
|
||||
|
||||
if tag =~ '^[?!]'
|
||||
" Return nothing if we are inside of ! or ? tag
|
||||
return []
|
||||
else
|
||||
let values = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][attrname]
|
||||
endif
|
||||
|
||||
if len(values) == 0
|
||||
return []
|
||||
endif
|
||||
|
||||
" We need special version of sbase
|
||||
let attrbase = matchstr(context, ".*[\"']")
|
||||
let attrquote = matchstr(attrbase, '.$')
|
||||
|
||||
for m in values
|
||||
" This if is needed to not offer all completions as-is
|
||||
" alphabetically but sort them. Those beginning with entered
|
||||
" part will be as first choices
|
||||
if m =~ '^'.entered_value
|
||||
call add(res, m . attrquote.' ')
|
||||
elseif m =~ entered_value
|
||||
call add(res2, m . attrquote.' ')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
|
||||
if tag =~ '?xml'
|
||||
" Two possible arguments for <?xml> plus variation
|
||||
let attrs = ['encoding', 'version="1.0"', 'version']
|
||||
elseif tag =~ '^!'
|
||||
" Don't make completion at all
|
||||
return []
|
||||
else
|
||||
let attrs = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1])
|
||||
endif
|
||||
|
||||
for m in sort(attrs)
|
||||
if m =~ '^'.attr
|
||||
call add(res, m)
|
||||
elseif m =~ attr
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
let menu = res + res2
|
||||
let final_menu = []
|
||||
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmlattrinfo')
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'], item)
|
||||
let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][0]
|
||||
let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][1]
|
||||
else
|
||||
let m_menu = ''
|
||||
let m_info = ''
|
||||
endif
|
||||
if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
|
||||
let item = item
|
||||
else
|
||||
let item .= '="'
|
||||
endif
|
||||
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
|
||||
endfor
|
||||
else
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
|
||||
let item = item
|
||||
else
|
||||
let item .= '="'
|
||||
endif
|
||||
let final_menu += [item]
|
||||
endfor
|
||||
endif
|
||||
return final_menu
|
||||
|
||||
endif
|
||||
" Close tag
|
||||
let b:unaryTagsStack = "base meta link hr br param img area input col"
|
||||
if context =~ '^\/'
|
||||
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
return [opentag.">"]
|
||||
endif
|
||||
|
||||
" Complete elements of XML structure
|
||||
" TODO: #REQUIRED, #IMPLIED, #FIXED, #PCDATA - but these should be detected like
|
||||
" entities - in first run
|
||||
" keywords: CDATA, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS
|
||||
" are hardly recognizable but keep it in reserve
|
||||
" also: EMPTY ANY SYSTEM PUBLIC DATA
|
||||
if context =~ '^!'
|
||||
let tags = ['!ELEMENT', '!DOCTYPE', '!ATTLIST', '!ENTITY', '!NOTATION', '![CDATA[', '![INCLUDE[', '![IGNORE[']
|
||||
|
||||
for m in tags
|
||||
if m =~ '^'.context
|
||||
let m = substitute(m, '^!\[\?', '', '')
|
||||
call add(res, m)
|
||||
elseif m =~ context
|
||||
let m = substitute(m, '^!\[\?', '', '')
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
|
||||
" Complete text declaration
|
||||
let g:co = context
|
||||
if context =~ '^?'
|
||||
let tags = ['?xml']
|
||||
|
||||
for m in tags
|
||||
if m =~ '^'.context
|
||||
call add(res, substitute(m, '^?', '', ''))
|
||||
elseif m =~ context
|
||||
call add(res, substitute(m, '^?', '', ''))
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
|
||||
" Deal with tag completion.
|
||||
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
let opentag = substitute(opentag, '^\k*:', '', '')
|
||||
if opentag == ''
|
||||
"return []
|
||||
let tags = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]})
|
||||
call filter(tags, 'v:val !~ "^vimxml"')
|
||||
else
|
||||
let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
|
||||
endif
|
||||
|
||||
let context = substitute(context, '^\k*:', '', '')
|
||||
|
||||
for m in tags
|
||||
if m =~ '^'.context
|
||||
call add(res, m)
|
||||
elseif m =~ context
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
let menu = res + res2
|
||||
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmltaginfo')
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'], item)
|
||||
let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][0]
|
||||
let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][1]
|
||||
else
|
||||
let m_menu = ''
|
||||
let m_info = ''
|
||||
endif
|
||||
if b:xml_namespace == 'DEFAULT'
|
||||
let xml_namespace = ''
|
||||
else
|
||||
let xml_namespace = b:xml_namespace.':'
|
||||
endif
|
||||
let final_menu += [{'word':xml_namespace.item, 'menu':m_menu, 'info':m_info}]
|
||||
endfor
|
||||
else
|
||||
let final_menu = menu
|
||||
endif
|
||||
return final_menu
|
||||
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" MM: This is greatly reduced closetag.vim used with kind permission of Steven
|
||||
" Mueller
|
||||
" Changes: strip all comments; delete error messages; add checking for
|
||||
" namespace
|
||||
" Author: Steven Mueller <diffusor@ugcs.caltech.edu>
|
||||
" Last Modified: Tue May 24 13:29:48 PDT 2005
|
||||
" Version: 0.9.1
|
||||
|
||||
function! xmlcomplete#GetLastOpenTag(unaryTagsStack)
|
||||
let linenum=line('.')
|
||||
let lineend=col('.') - 1 " start: cursor position
|
||||
let first=1 " flag for first line searched
|
||||
let b:TagStack='' " main stack of tags
|
||||
let startInComment=s:InComment()
|
||||
|
||||
if exists("b:xml_namespace")
|
||||
if b:xml_namespace == 'DEFAULT'
|
||||
let tagpat='</\=\(\k\|[.-]\)\+\|/>'
|
||||
else
|
||||
let tagpat='</\='.b:xml_namespace.':\(\k\|[.-]\)\+\|/>'
|
||||
endif
|
||||
else
|
||||
let tagpat='</\=\(\k\|[.-]\)\+\|/>'
|
||||
endif
|
||||
while (linenum>0)
|
||||
let line=getline(linenum)
|
||||
if first
|
||||
let line=strpart(line,0,lineend)
|
||||
else
|
||||
let lineend=strlen(line)
|
||||
endif
|
||||
let b:lineTagStack=''
|
||||
let mpos=0
|
||||
let b:TagCol=0
|
||||
while (mpos > -1)
|
||||
let mpos=matchend(line,tagpat)
|
||||
if mpos > -1
|
||||
let b:TagCol=b:TagCol+mpos
|
||||
let tag=matchstr(line,tagpat)
|
||||
|
||||
if exists('b:closetag_disable_synID') || startInComment==s:InCommentAt(linenum, b:TagCol)
|
||||
let b:TagLine=linenum
|
||||
call s:Push(matchstr(tag,'[^<>]\+'),'b:lineTagStack')
|
||||
endif
|
||||
let lineend=lineend-mpos
|
||||
let line=strpart(line,mpos,lineend)
|
||||
endif
|
||||
endwhile
|
||||
while (!s:EmptystackP('b:lineTagStack'))
|
||||
let tag=s:Pop('b:lineTagStack')
|
||||
if match(tag, '^/') == 0 "found end tag
|
||||
call s:Push(tag,'b:TagStack')
|
||||
elseif s:EmptystackP('b:TagStack') && !s:Instack(tag, a:unaryTagsStack) "found unclosed tag
|
||||
return tag
|
||||
else
|
||||
let endtag=s:Peekstack('b:TagStack')
|
||||
if endtag == '/'.tag || endtag == '/'
|
||||
call s:Pop('b:TagStack') "found a open/close tag pair
|
||||
elseif !s:Instack(tag, a:unaryTagsStack) "we have a mismatch error
|
||||
return ''
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
let linenum=linenum-1 | let first=0
|
||||
endwhile
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! s:InComment()
|
||||
return synIDattr(synID(line('.'), col('.'), 0), 'name') =~ 'Comment\|String'
|
||||
endfunction
|
||||
|
||||
function! s:InCommentAt(line, col)
|
||||
return synIDattr(synID(a:line, a:col, 0), 'name') =~ 'Comment\|String'
|
||||
endfunction
|
||||
|
||||
function! s:SetKeywords()
|
||||
let g:IsKeywordBak=&iskeyword
|
||||
let &iskeyword='33-255'
|
||||
endfunction
|
||||
|
||||
function! s:RestoreKeywords()
|
||||
let &iskeyword=g:IsKeywordBak
|
||||
endfunction
|
||||
|
||||
function! s:Push(el, sname)
|
||||
if !s:EmptystackP(a:sname)
|
||||
exe 'let '.a:sname."=a:el.' '.".a:sname
|
||||
else
|
||||
exe 'let '.a:sname.'=a:el'
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:EmptystackP(sname)
|
||||
exe 'let stack='.a:sname
|
||||
if match(stack,'^ *$') == 0
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:Instack(el, sname)
|
||||
exe 'let stack='.a:sname
|
||||
call s:SetKeywords()
|
||||
let m=match(stack, '\<'.a:el.'\>')
|
||||
call s:RestoreKeywords()
|
||||
if m < 0
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:Peekstack(sname)
|
||||
call s:SetKeywords()
|
||||
exe 'let stack='.a:sname
|
||||
let top=matchstr(stack, '\<.\{-1,}\>')
|
||||
call s:RestoreKeywords()
|
||||
return top
|
||||
endfunction
|
||||
|
||||
function! s:Pop(sname)
|
||||
if s:EmptystackP(a:sname)
|
||||
return ''
|
||||
endif
|
||||
exe 'let stack='.a:sname
|
||||
call s:SetKeywords()
|
||||
let loc=matchend(stack,'\<.\{-1,}\>')
|
||||
exe 'let '.a:sname.'=strpart(stack, loc+1, strlen(stack))'
|
||||
let top=strpart(stack, match(stack, '\<'), loc)
|
||||
call s:RestoreKeywords()
|
||||
return top
|
||||
endfunction
|
||||
|
||||
function! s:Clearstack(sname)
|
||||
exe 'let '.a:sname."=''"
|
||||
endfunction
|
||||
271
runtime/autoload/zip.vim
Normal file
271
runtime/autoload/zip.vim
Normal file
@@ -0,0 +1,271 @@
|
||||
" zip.vim: Handles browsing zipfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Dec 21, 2005
|
||||
" Version: 6
|
||||
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
" notice is copied with it. Like anything else that's free,
|
||||
" zipPlugin.vim is provided *as is* and comes with no warranty
|
||||
" of any kind, either expressed or implied. By using this
|
||||
" plugin, you agree that in no event will the copyright
|
||||
" holder be liable for any damages resulting from the use
|
||||
" of this software.
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Initialization: {{{1
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
if exists("g:loaded_zip")
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_zip= "v6"
|
||||
|
||||
" ----------------
|
||||
" Functions: {{{1
|
||||
" ----------------
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" zip#Browse: {{{2
|
||||
fun! zip#Browse(zipfile)
|
||||
" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
" sanity checks
|
||||
if !executable("unzip")
|
||||
echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Browse")
|
||||
return
|
||||
endif
|
||||
if !filereadable(a:zipfile)
|
||||
if a:zipfile !~# '^\a\+://'
|
||||
" if its an url, don't complain, let url-handlers such as vim do its thing
|
||||
echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Browse : file<".a:zipfile."> not readable")
|
||||
return
|
||||
endif
|
||||
if &ma != 1
|
||||
set ma
|
||||
endif
|
||||
let w:zipfile= a:zipfile
|
||||
|
||||
setlocal noswapfile
|
||||
setlocal buftype=nofile
|
||||
setlocal bufhidden=hide
|
||||
setlocal nobuflisted
|
||||
setlocal nowrap
|
||||
set ft=tar
|
||||
|
||||
" give header
|
||||
exe "$put ='".'\"'." zip.vim version ".g:loaded_zip."'"
|
||||
exe "$put ='".'\"'." Browsing zipfile ".a:zipfile."'"
|
||||
exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
|
||||
$put =''
|
||||
0d
|
||||
$
|
||||
|
||||
exe "silent r! unzip -l ".a:zipfile
|
||||
$d
|
||||
silent 4,$v/^\s\+\d\+\s\{0,5}\d/d
|
||||
silent 4,$s/^\%(.*\)\s\+\(\S\)/\1/
|
||||
|
||||
setlocal noma nomod ro
|
||||
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Browse")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" ZipBrowseSelect: {{{2
|
||||
fun! s:ZipBrowseSelect()
|
||||
" call Dfunc("ZipBrowseSelect() zipfile<".w:zipfile."> curfile<".expand("%").">")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
let fname= getline(".")
|
||||
|
||||
" sanity check
|
||||
if fname =~ '^"'
|
||||
let &report= repkeep
|
||||
" call Dret("ZipBrowseSelect")
|
||||
return
|
||||
endif
|
||||
if fname =~ '/$'
|
||||
echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("ZipBrowseSelect")
|
||||
return
|
||||
endif
|
||||
|
||||
" call Decho("fname<".fname.">")
|
||||
|
||||
" get zipfile to the new-window
|
||||
let zipfile= substitute(w:zipfile,'.zip$','','e')
|
||||
let curfile= expand("%")
|
||||
|
||||
new
|
||||
wincmd _
|
||||
let s:zipfile_{winnr()}= curfile
|
||||
exe "e zipfile:".zipfile.':'.fname
|
||||
filetype detect
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("ZipBrowseSelect : s:zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" zip#Read: {{{2
|
||||
fun! zip#Read(fname,mode)
|
||||
" call Dfunc("zip#Read(fname<".a:fname.">,mode=".a:mode.")")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
|
||||
let fname = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
|
||||
" call Decho("zipfile<".zipfile."> fname<".fname.">")
|
||||
|
||||
exe "r! unzip -p ".zipfile." ".fname
|
||||
|
||||
" cleanup
|
||||
0d
|
||||
set nomod
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Read")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" zip#Write: {{{2
|
||||
fun! zip#Write(fname)
|
||||
" call Dfunc("zip#Write(fname<".a:fname.") zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
|
||||
let repkeep= &report
|
||||
set report=10
|
||||
|
||||
" sanity checks
|
||||
if !executable("zip")
|
||||
echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Write")
|
||||
return
|
||||
endif
|
||||
if !exists("*mkdir")
|
||||
echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Write")
|
||||
return
|
||||
endif
|
||||
|
||||
let curdir= getcwd()
|
||||
let tmpdir= tempname()
|
||||
" call Decho("orig tempname<".tmpdir.">")
|
||||
if tmpdir =~ '\.'
|
||||
let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
|
||||
endif
|
||||
" call Decho("tmpdir<".tmpdir.">")
|
||||
call mkdir(tmpdir,"p")
|
||||
|
||||
" attempt to change to the indicated directory
|
||||
try
|
||||
exe "cd ".escape(tmpdir,' \')
|
||||
catch /^Vim\%((\a\+)\)\=:E344/
|
||||
echohl Error | echo "***error*** (zip#Write) cannot cd to temporary directory" | Echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Write")
|
||||
return
|
||||
endtry
|
||||
" call Decho("current directory now: ".getcwd())
|
||||
|
||||
" place temporary files under .../_ZIPVIM_/
|
||||
if isdirectory("_ZIPVIM_")
|
||||
call s:Rmdir("_ZIPVIM_")
|
||||
endif
|
||||
call mkdir("_ZIPVIM_")
|
||||
cd _ZIPVIM_
|
||||
" call Decho("current directory now: ".getcwd())
|
||||
|
||||
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
|
||||
let fname = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
|
||||
|
||||
if fname =~ '/'
|
||||
let dirpath = substitute(fname,'/[^/]\+$','','e')
|
||||
if executable("cygpath")
|
||||
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
|
||||
endif
|
||||
call mkdir(dirpath,"p")
|
||||
endif
|
||||
if zipfile !~ '/'
|
||||
let zipfile= curdir.'/'.zipfile
|
||||
endif
|
||||
" call Decho("zipfile<".zipfile."> fname<".fname.">")
|
||||
|
||||
exe "w! ".fname
|
||||
if executable("cygpath")
|
||||
let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
|
||||
endif
|
||||
|
||||
" call Decho("zip -u ".zipfile.".zip ".fname)
|
||||
call system("zip -u ".zipfile.".zip ".fname)
|
||||
if v:shell_error != 0
|
||||
echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
|
||||
elseif s:zipfile_{winnr()} =~ '^\a\+://'
|
||||
" support writing zipfiles across a network
|
||||
let netzipfile= s:zipfile_{winnr()}
|
||||
" call Decho("handle writing <".zipfile.".zip> across network as <".netzipfile.">")
|
||||
1split|enew
|
||||
let binkeep= &binary
|
||||
let eikeep = &ei
|
||||
set binary ei=all
|
||||
exe "e! ".zipfile.".zip"
|
||||
call netrw#NetWrite(netzipfile)
|
||||
let &ei = eikeep
|
||||
let &binary = binkeep
|
||||
q!
|
||||
unlet s:zipfile_{winnr()}
|
||||
endif
|
||||
|
||||
" cleanup and restore current directory
|
||||
cd ..
|
||||
call s:Rmdir("_ZIPVIM_")
|
||||
exe "cd ".escape(curdir,' \')
|
||||
setlocal nomod
|
||||
|
||||
let &report= repkeep
|
||||
" call Dret("zip#Write")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Rmdir: {{{2
|
||||
fun! s:Rmdir(fname)
|
||||
" call Dfunc("Rmdir(fname<".a:fname.">)")
|
||||
if has("unix")
|
||||
call system("/bin/rm -rf ".a:fname)
|
||||
elseif has("win32") || has("win95") || has("win64") || has("win16")
|
||||
if &shell =~? "sh$"
|
||||
call system("/bin/rm -rf ".a:fname)
|
||||
else
|
||||
call system("del /S ".a:fname)
|
||||
endif
|
||||
endif
|
||||
" call Dret("Rmdir")
|
||||
endfun
|
||||
|
||||
" ------------------------------------------------------------------------
|
||||
" Modelines And Restoration: {{{1
|
||||
let &cpo= s:keepcpo
|
||||
unlet s:keepcpo
|
||||
" vim:ts=8 fdm=marker
|
||||
@@ -11,9 +11,9 @@ let current_compiler = "bdf"
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
setlocal makeprg=bdftopcf\ $*
|
||||
CompilerSet makeprg=bdftopcf\ $*
|
||||
|
||||
setlocal errorformat=%ABDF\ %trror\ on\ line\ %l:\ %m,
|
||||
CompilerSet errorformat=%ABDF\ %trror\ on\ line\ %l:\ %m,
|
||||
\%-Z%p^,
|
||||
\%Cbdftopcf:\ bdf\ input\\,\ %f\\,\ corrupt,
|
||||
\%-G%.%#
|
||||
|
||||
41
runtime/compiler/eruby.vim
Normal file
41
runtime/compiler/eruby.vim
Normal file
@@ -0,0 +1,41 @@
|
||||
" Vim compiler file
|
||||
" Language: eRuby
|
||||
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
endif
|
||||
let current_compiler = "eruby"
|
||||
|
||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
if exists("eruby_compiler") && eruby_compiler == "eruby"
|
||||
CompilerSet makeprg=eruby
|
||||
else
|
||||
CompilerSet makeprg=erb
|
||||
endif
|
||||
|
||||
CompilerSet errorformat=
|
||||
\eruby:\ %f:%l:%m,
|
||||
\%+E%f:%l:\ parse\ error,
|
||||
\%W%f:%l:\ warning:\ %m,
|
||||
\%E%f:%l:in\ %*[^:]:\ %m,
|
||||
\%E%f:%l:\ %m,
|
||||
\%-C%\tfrom\ %f:%l:in\ %.%#,
|
||||
\%-Z%\tfrom\ %f:%l,
|
||||
\%-Z%p^,
|
||||
\%-G%.%#
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
|
||||
17
runtime/compiler/fpc.vim
Normal file
17
runtime/compiler/fpc.vim
Normal file
@@ -0,0 +1,17 @@
|
||||
" Vim compiler file
|
||||
" Compiler: FPC 2.1
|
||||
" Maintainer: Jaroslaw Blasiok <jaro3000@o2.pl>
|
||||
" Last Change: 2005 October 07
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
endif
|
||||
let current_compiler = "fpc"
|
||||
|
||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
" NOTE: compiler must be runned with -vb to write whole source path, not only file
|
||||
" name.
|
||||
CompilerSet errorformat=%f(%l\\,%c)\ %m
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim compiler file
|
||||
" Compiler: HP aCC
|
||||
" Maintainer: Matthias Ulrich <matthias-ulrich@web.de>
|
||||
" URL: http://www.subhome.de/vim/hp_acc.vim
|
||||
" Last Change: 2004 Mar 27
|
||||
" URL: http://www.subhome.de/vim/hp_acc.vim
|
||||
" Last Change: 2005 Nov 19
|
||||
"
|
||||
" aCC --version says: "HP ANSI C++ B3910B A.03.13"
|
||||
" This compiler has been tested on:
|
||||
@@ -10,6 +10,10 @@
|
||||
"
|
||||
" Tim Brown's aCC is: "HP ANSI C++ B3910B A.03.33"
|
||||
" and it also works fine...
|
||||
"
|
||||
" Now suggestions by aCC are supported (compile flag aCC +w).
|
||||
" Thanks to Tim Brown again!!
|
||||
"
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -21,6 +25,7 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
endif
|
||||
|
||||
CompilerSet errorformat=%A%trror\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m,
|
||||
\%A%tarning\ (suggestion)\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
|
||||
\%A%tarning\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
|
||||
\%Z\ \ \ \ %p^%.%#,
|
||||
\%-C%.%#
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim compiler file
|
||||
" Compiler: Miscrosoft Visual C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Jun 22
|
||||
" Last Change: 2005 Nov 30
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -9,5 +9,5 @@ endif
|
||||
let current_compiler = "msvc"
|
||||
|
||||
" The errorformat for MSVC is the default.
|
||||
setlocal errorformat&
|
||||
setlocal makeprg=nmake
|
||||
CompilerSet errorformat&
|
||||
CompilerSet makeprg=nmake
|
||||
|
||||
@@ -11,7 +11,7 @@ let current_compiler = "rst"
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
setlocal errorformat=
|
||||
CompilerSet errorformat=
|
||||
\%f:%l:\ (%tEBUG/0)\ %m,
|
||||
\%f:%l:\ (%tNFO/1)\ %m,
|
||||
\%f:%l:\ (%tARNING/2)\ %m,
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
" Vim compiler file
|
||||
" Compiler: Ruby syntax check and/or error reporting
|
||||
" Maintainer: Tim Hammerquist <timmy@cpan.org>
|
||||
" Last Change: Tue Jul 16 00:38:00 PDT 2002
|
||||
" Language: Ruby
|
||||
" Function: Syntax check and/or error reporting
|
||||
" Maintainer: Tim Hammerquist <timh at rubyforge.org>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
"
|
||||
" Changelog:
|
||||
" 0.2: script saves and restores 'cpoptions' value to prevent problems with
|
||||
" line continuations
|
||||
" 0.1: initial release
|
||||
" 0.2: script saves and restores 'cpoptions' value to prevent problems with
|
||||
" line continuations
|
||||
" 0.1: initial release
|
||||
"
|
||||
" Contributors:
|
||||
" Hugh Sasse <hgs@dmu.ac.uk>
|
||||
@@ -22,6 +26,7 @@
|
||||
" This is my first experience with 'errorformat' and compiler plugins and
|
||||
" I welcome any input from more experienced (or clearer-thinking)
|
||||
" individuals.
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -59,4 +64,4 @@ CompilerSet errorformat=
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: ft=vim
|
||||
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
|
||||
|
||||
35
runtime/compiler/rubyunit.vim
Normal file
35
runtime/compiler/rubyunit.vim
Normal file
@@ -0,0 +1,35 @@
|
||||
" Vim compiler file
|
||||
" Language: Test::Unit - Ruby Unit Testing Framework
|
||||
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
endif
|
||||
let current_compiler = "rubyunit"
|
||||
|
||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
CompilerSet makeprg=testrb
|
||||
|
||||
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
|
||||
\%C%m\ [%f:%l]:,
|
||||
\%E\ %\\+%\\d%\\+)\ Error:,
|
||||
\%C%m:,
|
||||
\%C\ \ \ \ %f:%l:%.%#,
|
||||
\%C%m,
|
||||
\%Z\ %#,
|
||||
\%-G%.%#
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
|
||||
@@ -71,7 +71,10 @@ DOCS = \
|
||||
pattern.txt \
|
||||
pi_gzip.txt \
|
||||
pi_netrw.txt \
|
||||
pi_paren.txt \
|
||||
pi_spec.txt \
|
||||
pi_tar.txt \
|
||||
pi_zip.txt \
|
||||
print.txt \
|
||||
quickfix.txt \
|
||||
quickref.txt \
|
||||
@@ -87,6 +90,7 @@ DOCS = \
|
||||
starting.txt \
|
||||
spell.txt \
|
||||
syntax.txt \
|
||||
tabpage.txt \
|
||||
tagsrch.txt \
|
||||
term.txt \
|
||||
tips.txt \
|
||||
@@ -193,6 +197,7 @@ HTMLS = \
|
||||
pattern.html \
|
||||
pi_gzip.html \
|
||||
pi_netrw.html \
|
||||
pi_paren.html \
|
||||
pi_spec.html \
|
||||
print.html \
|
||||
quickfix.html \
|
||||
@@ -209,6 +214,7 @@ HTMLS = \
|
||||
starting.html \
|
||||
spell.html \
|
||||
syntax.html \
|
||||
tabpage.html \
|
||||
tagsrch.html \
|
||||
tags.html \
|
||||
term.html \
|
||||
@@ -387,6 +393,7 @@ os_risc.txt:
|
||||
os_win32.txt:
|
||||
touch os_win32.txt
|
||||
|
||||
# Note that $< works with GNU make while $> works for BSD make.
|
||||
vim-fr.UTF-8.1: vim-fr.1
|
||||
iconv -f latin1 -t utf-8 $< >$@
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 7.0aa. Last change: 2005 Jul 30
|
||||
*autocmd.txt* For Vim version 7.0aa. Last change: 2006 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -18,6 +18,7 @@ For a basic explanation, see section |40.3| in the user manual.
|
||||
8. Groups |autocmd-groups|
|
||||
9. Executing autocommands |autocmd-execute|
|
||||
10. Using autocommands |autocmd-use|
|
||||
11. Disabling autocommands |autocmd-disable|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
{only when the |+autocmd| feature has not been disabled at compile time}
|
||||
@@ -169,18 +170,201 @@ See |:verbose-cmd| for more information.
|
||||
==============================================================================
|
||||
5. Events *autocmd-events* *E215* *E216*
|
||||
|
||||
You can specify a comma-separated list of event names. No white space can be
|
||||
used in this list. The command applies to all the events in the list.
|
||||
|
||||
For READING FILES there are four kinds of events possible:
|
||||
BufNewFile starting to edit a non-existent file
|
||||
BufReadPre BufReadPost starting to edit an existing file
|
||||
FilterReadPre FilterReadPost read the temp file with filter output
|
||||
FileReadPre FileReadPost any other file read
|
||||
Vim uses only one of these four kinds when reading a file. The "Pre" and
|
||||
"Post" events are both triggered, before and after reading the file.
|
||||
|
||||
Note that the autocommands for the *ReadPre events and all the Filter events
|
||||
are not allowed to change the current buffer (you will get an error message if
|
||||
this happens). This is to prevent the file to be read into the wrong buffer.
|
||||
|
||||
Note that the 'modified' flag is reset AFTER executing the BufReadPost
|
||||
and BufNewFile autocommands. But when the 'modified' option was set by the
|
||||
autocommands, this doesn't happen.
|
||||
|
||||
You can use the 'eventignore' option to ignore a number of events or all
|
||||
events.
|
||||
*autocommand-events* *{event}*
|
||||
Vim recognizes the following events. Vim ignores the case of event names
|
||||
(e.g., you can use "BUFread" or "bufread" instead of "BufRead").
|
||||
|
||||
First an overview by function with a short explanation. Then the list
|
||||
alpabetically with full explanations |autocmd-events-abc|.
|
||||
|
||||
Name triggered by ~
|
||||
|
||||
Reading
|
||||
|BufNewFile| starting to edit a file that doesn't exist
|
||||
|BufReadPre| starting to edit a new buffer, before reading the file
|
||||
|BufRead| starting to edit a new buffer, after reading the file
|
||||
|BufReadPost| starting to edit a new buffer, after reading the file
|
||||
|BufReadCmd| before starting to edit a new buffer |Cmd-event|
|
||||
|
||||
|FileReadPre| before reading a file with a ":read" command
|
||||
|FileReadPost| after reading a file with a ":read" command
|
||||
|FileReadCmd| before reading a file with a ":read" comman |Cmd-event|
|
||||
|
||||
|FilterReadPre| before reading a file from a filter command
|
||||
|FilterReadPost| after reading a file from a filter command
|
||||
|
||||
|StdinReadPre| before reading from stdin into the buffer
|
||||
|StdinReadPost| After reading from the stdin into the buffer
|
||||
|
||||
Writing
|
||||
|BufWrite| starting to write the whole buffer to a file
|
||||
|BufWritePre| starting to write the whole buffer to a file
|
||||
|BufWritePost| after writing the whole buffer to a file
|
||||
|BufWriteCmd| before writing the whole buffer to a file |Cmd-event|
|
||||
|
||||
|FileWritePre| starting to write part of a buffer to a file
|
||||
|FileWritePost| after writing part of a buffer to a file
|
||||
|FileWriteCmd| before writing part of a buffer to a file |Cmd-event|
|
||||
|
||||
|FileAppendPre| starting to append to a file
|
||||
|FileAppendPost| after appending to a file
|
||||
|FileAppendCmd| before appending to a file |Cmd-event|
|
||||
|
||||
|FilterWritePre| starting to write a file for a filter command or diff
|
||||
|FilterWritePost| after writing a file for a filter command or diff
|
||||
|
||||
Buffers
|
||||
|BufAdd| just after adding a buffer to the buffer list
|
||||
|BufCreate| just after adding a buffer to the buffer list
|
||||
|BufDelete| before deleting a buffer from the buffer list
|
||||
|BufWipeout| before completely deleting a buffer
|
||||
|
||||
|BufFilePre| before changing the name of the current buffer
|
||||
|BufFilePost| after changing the name of the current buffer
|
||||
|
||||
|BufEnter| after entering a buffer
|
||||
|BufLeave| before leaving to another buffer
|
||||
|BufWinEnter| after a buffer is displayed in a window
|
||||
|BufWinLeave| before a buffer is removed from a window
|
||||
|
||||
|BufUnload| before unloading a buffer
|
||||
|BufHidden| just after a buffer has become hidden
|
||||
|BufNew| just after creating a new buffer
|
||||
|
||||
|SwapExists| detected an existing swap file
|
||||
|
||||
Options
|
||||
|FileType| when the 'filetype' option has been set
|
||||
|Syntax| when the 'syntax' option has been set
|
||||
|EncodingChanged| after the 'encoding' option has been changed
|
||||
|TermChanged| after the value of 'term' has changed
|
||||
|
||||
Startup and exit
|
||||
|VimEnter| after doing all the startup stuff
|
||||
|GUIEnter| after starting the GUI successfully
|
||||
|TermResponse| after the termainal response to |t_RV| is received
|
||||
|
||||
|VimLeavePre| before exiting Vim, before writing the viminfo file
|
||||
|VimLeave| before exiting Vim, after writing the viminfo file
|
||||
|
||||
Various
|
||||
|FileChangedShell| Vim notices that a file changed since editing started
|
||||
|FileChangedRO| before making the first change to a read-only file
|
||||
|
||||
|FuncUndefined| a user function is used but it isn't defined
|
||||
|SpellFileMissing| a spell file is used but it can't be found
|
||||
|
||||
|FocusGained| Vim got input focus
|
||||
|FocusLost| Vim lost input focus
|
||||
|CursorHold| the user doesn't press a key for a while
|
||||
|CursorHoldI| the user doesn't press a key for a while in Insert mode
|
||||
|CursorMoved| the cursor was moved in Normal mode
|
||||
|CursorMovedI| the cursor was moved in Insert mode
|
||||
|
||||
|WinEnter| after entering another window
|
||||
|WinLeave| before leaving a window
|
||||
|TabEnter| after entering another tab page
|
||||
|TabLeave| before leaving a tab page
|
||||
|CmdwinEnter| after entering the command-line window
|
||||
|CmdwinLeave| before leaving the command-line window
|
||||
|
||||
|InsertEnter| starting Insert mode
|
||||
|InsertChange| when typing <Insert> while in Insert or Replace mode
|
||||
|InsertLeave| when leaving Insert mode
|
||||
|
||||
|ColorScheme| after loading a color scheme
|
||||
|
||||
|RemoteReply| a reply from a server Vim was received
|
||||
|
||||
|QuickFixCmdPre| before a quickfix command is run
|
||||
|QuickFixCmdPost| after a quickfix command is run
|
||||
|
||||
|SessionLoadPost| after loading a session file
|
||||
|
||||
|MenuPopup| just before showing the popup menu
|
||||
|
||||
|User| to be used in combination with ":doautocmd"
|
||||
|
||||
|
||||
The alphabetical list of autocommand events: *autocmd-events-abc*
|
||||
|
||||
*BufCreate* *BufAdd*
|
||||
BufAdd or BufCreate Just after creating a new buffer which is
|
||||
added to the buffer list, or adding a buffer
|
||||
to the buffer list.
|
||||
Also used just after a buffer in the buffer
|
||||
list has been renamed.
|
||||
The BufCreate event is for historic reasons.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being created "<afile>".
|
||||
*BufDelete*
|
||||
BufDelete Before deleting a buffer from the buffer list.
|
||||
The BufUnload may be called first (if the
|
||||
buffer was loaded).
|
||||
Also used just before a buffer in the buffer
|
||||
list is renamed.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being deleted "<afile>".
|
||||
*BufEnter*
|
||||
BufEnter After entering a buffer. Useful for setting
|
||||
options for a file type. Also executed when
|
||||
starting to edit a buffer, after the
|
||||
BufReadPost autocommands.
|
||||
*BufFilePost*
|
||||
BufFilePost After changing the name of the current buffer
|
||||
with the ":file" or ":saveas" command.
|
||||
*BufFilePre*
|
||||
BufFilePre Before changing the name of the current buffer
|
||||
with the ":file" or ":saveas" command.
|
||||
*BufHidden*
|
||||
BufHidden Just after a buffer has become hidden. That
|
||||
is, when there are no longer windows that show
|
||||
the buffer, but the buffer is not unloaded or
|
||||
deleted. Not used for ":qa" or ":q" when
|
||||
exiting Vim.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being unloaded "<afile>".
|
||||
*BufLeave*
|
||||
BufLeave Before leaving to another buffer. Also when
|
||||
leaving or closing the current window and the
|
||||
new current window is not for the same buffer.
|
||||
Not used for ":qa" or ":q" when exiting Vim.
|
||||
*BufNew*
|
||||
BufNew Just after creating a new buffer. Also used
|
||||
just after a buffer has been renamed. When
|
||||
the buffer is added to the buffer list BufAdd
|
||||
will be triggered too.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being created "<afile>".
|
||||
*BufNewFile*
|
||||
BufNewFile When starting to edit a file that doesn't
|
||||
exist. Can be used to read in a skeleton
|
||||
file.
|
||||
*BufReadPre* *E200* *E201*
|
||||
BufReadPre When starting to edit a new buffer, before
|
||||
reading the file into the buffer. Not used
|
||||
if the file doesn't exist.
|
||||
*BufRead* *BufReadPost*
|
||||
BufRead or BufReadPost When starting to edit a new buffer, after
|
||||
reading the file into the buffer, before
|
||||
@@ -193,60 +377,46 @@ BufRead or BufReadPost When starting to edit a new buffer, after
|
||||
*BufReadCmd*
|
||||
BufReadCmd Before starting to edit a new buffer. Should
|
||||
read the file into the buffer. |Cmd-event|
|
||||
*BufFilePre*
|
||||
BufFilePre Before changing the name of the current buffer
|
||||
with the ":file" or ":saveas" command.
|
||||
*BufFilePost*
|
||||
BufFilePost After changing the name of the current buffer
|
||||
with the ":file" or ":saveas" command.
|
||||
*FileReadPre*
|
||||
FileReadPre Before reading a file with a ":read" command.
|
||||
*FileReadPost*
|
||||
FileReadPost After reading a file with a ":read" command.
|
||||
Note that Vim sets the '[ and '] marks to the
|
||||
first and last line of the read. This can be
|
||||
used to operate on the lines just read.
|
||||
*FileReadCmd*
|
||||
FileReadCmd Before reading a file with a ":read" command.
|
||||
Should do the reading of the file. |Cmd-event|
|
||||
*FilterReadPre* *E135*
|
||||
FilterReadPre Before reading a file from a filter command.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer, not the name of the
|
||||
temporary file that is the output of the
|
||||
filter command.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FilterReadPost*
|
||||
FilterReadPost After reading a file from a filter command.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer as with FilterReadPre.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FileType*
|
||||
FileType When the 'filetype' option has been set.
|
||||
<afile> can be used for the name of the file
|
||||
where this option was set, and <amatch> for
|
||||
the new value of 'filetype'.
|
||||
See |filetypes|.
|
||||
*Syntax*
|
||||
Syntax When the 'syntax' option has been set.
|
||||
<afile> can be used for the name of the file
|
||||
where this option was set, and <amatch> for
|
||||
the new value of 'syntax'.
|
||||
See |:syn-on|.
|
||||
*StdinReadPre*
|
||||
StdinReadPre Before reading from stdin into the buffer.
|
||||
Only used when the "-" argument was used when
|
||||
Vim was started |--|.
|
||||
*StdinReadPost*
|
||||
StdinReadPost After reading from the stdin into the buffer,
|
||||
before executing the modelines. Only used
|
||||
when the "-" argument was used when Vim was
|
||||
started |--|.
|
||||
*BufReadPre* *E200* *E201*
|
||||
BufReadPre When starting to edit a new buffer, before
|
||||
reading the file into the buffer. Not used
|
||||
if the file doesn't exist.
|
||||
*BufUnload*
|
||||
BufUnload Before unloading a buffer. This is when the
|
||||
text in the buffer is going to be freed. This
|
||||
may be after a BufWritePost and before a
|
||||
BufDelete. Also used for all buffers that are
|
||||
loaded when Vim is going to exit.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being unloaded "<afile>".
|
||||
*BufWinEnter*
|
||||
BufWinEnter After a buffer is displayed in a window. This
|
||||
can be when the buffer is loaded (after
|
||||
processing the modelines), when a hidden
|
||||
buffer is displayed in a window (and is no
|
||||
longer hidden) or a buffer already visible in
|
||||
a window is also displayed in another window.
|
||||
*BufWinLeave*
|
||||
BufWinLeave Before a buffer is removed from a window.
|
||||
Not when it's still visible in another window.
|
||||
Also triggered when exiting. It's triggered
|
||||
before BufUnload or BufHidden.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being unloaded "<afile>".
|
||||
*BufWipeout*
|
||||
BufWipeout Before completely deleting a buffer. The
|
||||
BufUnload and BufDelete events may be called
|
||||
first (if the buffer was loaded and was in the
|
||||
buffer list). Also used just before a buffer
|
||||
is renamed (also when it's not in the buffer
|
||||
list).
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being deleted "<afile>".
|
||||
*BufWrite* *BufWritePre*
|
||||
BufWrite or BufWritePre Before writing the whole buffer to a file.
|
||||
*BufWritePost*
|
||||
BufWritePost After writing the whole buffer to a file
|
||||
(should undo the commands for BufWritePre).
|
||||
*BufWriteCmd*
|
||||
BufWriteCmd Before writing the whole buffer to a file.
|
||||
Should do the writing of the file and reset
|
||||
@@ -254,42 +424,86 @@ BufWriteCmd Before writing the whole buffer to a file.
|
||||
'cpo' and writing to another file |cpo-+|.
|
||||
The buffer contents should not be changed.
|
||||
|Cmd-event|
|
||||
*FileWritePre*
|
||||
FileWritePre Before writing to a file, when not writing the
|
||||
whole buffer. Use the '[ and '] marks for the
|
||||
range of lines.
|
||||
*FileWritePost*
|
||||
FileWritePost After writing to a file, when not writing the
|
||||
whole buffer.
|
||||
*FileWriteCmd*
|
||||
FileWriteCmd Before writing to a file, when not writing the
|
||||
whole buffer. Should do the writing to the
|
||||
file. Should not change the buffer. Use the
|
||||
'[ and '] marks for the range of lines.
|
||||
|Cmd-event|
|
||||
*FileAppendPre*
|
||||
FileAppendPre Before appending to a file. Use the '[ and ']
|
||||
marks for the range of lines.
|
||||
*FileAppendPost*
|
||||
FileAppendPost After appending to a file.
|
||||
*BufWritePost*
|
||||
BufWritePost After writing the whole buffer to a file
|
||||
(should undo the commands for BufWritePre).
|
||||
*CmdwinEnter*
|
||||
CmdwinEnter After entering the command-line window.
|
||||
Useful for setting options specifically for
|
||||
this special type of window. This is
|
||||
triggered _instead_ of BufEnter and WinEnter.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*CmdwinLeave*
|
||||
CmdwinLeave Before leaving the command-line window.
|
||||
Useful to clean up any global setting done
|
||||
with CmdwinEnter. This is triggered _instead_
|
||||
of BufLeave and WinLeave.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*ColorScheme*
|
||||
ColorScheme After loading a color scheme. |:colorscheme|
|
||||
|
||||
*CursorHold*
|
||||
CursorHold When the user doesn't press a key for the time
|
||||
specified with 'updatetime'. Not re-triggered
|
||||
until the user has pressed a key (i.e. doesn't
|
||||
fire every 'updatetime' ms if you leave Vim to
|
||||
make some coffee. :) See |CursorHold-example|
|
||||
for previewing tags.
|
||||
This event is only triggered in Normal mode.
|
||||
While recording the CursorHold event is not
|
||||
triggered. |q|
|
||||
Note: Interactive commands cannot be used for
|
||||
this event. There is no hit-enter prompt,
|
||||
the screen is updated directly (when needed).
|
||||
Note: In the future there will probably be
|
||||
another option to set the time.
|
||||
Hint: to force an update of the status lines
|
||||
use: >
|
||||
:let &ro = &ro
|
||||
< {only on Amiga, Unix, Win32, MSDOS and all GUI
|
||||
versions}
|
||||
*CursorHoldI*
|
||||
CursorHoldI Just like CursorHold, but in Insert mode.
|
||||
|
||||
*CursorMoved*
|
||||
CursorMoved After the cursor was moved in Normal mode.
|
||||
Also when the text of the cursor line has been
|
||||
changed, e.g., with "x", "rx" or "p".
|
||||
Not triggered when there is typeahead or when
|
||||
an operator is pending.
|
||||
For an example see |match-parens|.
|
||||
Careful: Don't do anything that the user does
|
||||
not expect or that is slow.
|
||||
*CursorMovedI*
|
||||
CursorMovedI After the cursor was moved in Insert mode.
|
||||
Otherwise the same as CursorMoved.
|
||||
*EncodingChanged*
|
||||
EncodingChanged Fires off after the 'encoding' option has been
|
||||
changed. Useful to set up fonts, for example.
|
||||
*FileAppendCmd*
|
||||
FileAppendCmd Before appending to a file. Should do the
|
||||
appending to the file. Use the '[ and ']
|
||||
marks for the range of lines.|Cmd-event|
|
||||
*FilterWritePre*
|
||||
FilterWritePre Before writing a file for a filter command or
|
||||
making a diff.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer, not the name of the
|
||||
temporary file that is the output of the
|
||||
filter command.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FilterWritePost*
|
||||
FilterWritePost After writing a file for a filter command or
|
||||
making a diff.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer as with FilterWritePre.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FileAppendPost*
|
||||
FileAppendPost After appending to a file.
|
||||
*FileAppendPre*
|
||||
FileAppendPre Before appending to a file. Use the '[ and ']
|
||||
marks for the range of lines.
|
||||
*FileChangedRO*
|
||||
FileChangedRO Before making the first change to a read-only
|
||||
file. Can be used to check-out the file from
|
||||
a source control system. Not triggered when
|
||||
the change was caused by an autocommand.
|
||||
This event is triggered when making the first
|
||||
change in a buffer or the first change after
|
||||
'readonly' was set,
|
||||
just before the change is applied to the text.
|
||||
WARNING: If the autocommand moves the cursor
|
||||
the effect of the change is undefined.
|
||||
*FileChangedShell*
|
||||
FileChangedShell When Vim notices that the modification time of
|
||||
a file has changed since editing started.
|
||||
@@ -319,15 +533,64 @@ FileChangedShell When Vim notices that the modification time of
|
||||
commands for the FileChangedShell event no
|
||||
other FileChangedShell event will be
|
||||
triggered.
|
||||
*FileChangedRO*
|
||||
FileChangedRO Before making the first change to a read-only
|
||||
file. Can be used to check-out the file from
|
||||
a source control system. Not triggered when
|
||||
the change was caused by an autocommand.
|
||||
WARNING: This event is triggered when making a
|
||||
change, just before the change is applied to
|
||||
the text. If the autocommand moves the cursor
|
||||
the effect of the change is undefined.
|
||||
*FileEncoding*
|
||||
FileEncoding Obsolete. It still works and is equivalent
|
||||
to |EncodingChanged|.
|
||||
*FileReadCmd*
|
||||
FileReadCmd Before reading a file with a ":read" command.
|
||||
Should do the reading of the file. |Cmd-event|
|
||||
*FileReadPost*
|
||||
FileReadPost After reading a file with a ":read" command.
|
||||
Note that Vim sets the '[ and '] marks to the
|
||||
first and last line of the read. This can be
|
||||
used to operate on the lines just read.
|
||||
*FileReadPre*
|
||||
FileReadPre Before reading a file with a ":read" command.
|
||||
*FileType*
|
||||
FileType When the 'filetype' option has been set.
|
||||
<afile> can be used for the name of the file
|
||||
where this option was set, and <amatch> for
|
||||
the new value of 'filetype'.
|
||||
See |filetypes|.
|
||||
*FileWriteCmd*
|
||||
FileWriteCmd Before writing to a file, when not writing the
|
||||
whole buffer. Should do the writing to the
|
||||
file. Should not change the buffer. Use the
|
||||
'[ and '] marks for the range of lines.
|
||||
|Cmd-event|
|
||||
*FileWritePost*
|
||||
FileWritePost After writing to a file, when not writing the
|
||||
whole buffer.
|
||||
*FileWritePre*
|
||||
FileWritePre Before writing to a file, when not writing the
|
||||
whole buffer. Use the '[ and '] marks for the
|
||||
range of lines.
|
||||
*FilterReadPost*
|
||||
FilterReadPost After reading a file from a filter command.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer as with FilterReadPre.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FilterReadPre* *E135*
|
||||
FilterReadPre Before reading a file from a filter command.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer, not the name of the
|
||||
temporary file that is the output of the
|
||||
filter command.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FilterWritePost*
|
||||
FilterWritePost After writing a file for a filter command or
|
||||
making a diff.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer as with FilterWritePre.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FilterWritePre*
|
||||
FilterWritePre Before writing a file for a filter command or
|
||||
making a diff.
|
||||
Vim checks the pattern against the name of
|
||||
the current buffer, not the name of the
|
||||
temporary file that is the output of the
|
||||
filter command.
|
||||
Not triggered when 'shelltemp' is off.
|
||||
*FocusGained*
|
||||
FocusGained When Vim got input focus. Only for the GUI
|
||||
version and a few console versions where this
|
||||
@@ -343,104 +606,150 @@ FuncUndefined When a user function is used but it isn't
|
||||
when it's used. Both <amatch> and <afile> are
|
||||
set to the name of the function.
|
||||
See |autoload-functions|.
|
||||
*CursorHold*
|
||||
CursorHold When the user doesn't press a key for the time
|
||||
specified with 'updatetime'. Not re-triggered
|
||||
until the user has pressed a key (i.e. doesn't
|
||||
fire every 'updatetime' ms if you leave Vim to
|
||||
make some coffee. :) See |CursorHold-example|
|
||||
for previewing tags.
|
||||
This event is only triggered in Normal mode.
|
||||
Note: Interactive commands cannot be used for
|
||||
this event. There is no hit-enter prompt,
|
||||
the screen is updated directly (when needed).
|
||||
Note: In the future there will probably be
|
||||
another option to set the time.
|
||||
Hint: to force an update of the status lines
|
||||
use: >
|
||||
:let &ro = &ro
|
||||
< {only on Amiga, Unix, Win32, MSDOS and all GUI
|
||||
versions}
|
||||
*BufEnter*
|
||||
BufEnter After entering a buffer. Useful for setting
|
||||
options for a file type. Also executed when
|
||||
starting to edit a buffer, after the
|
||||
BufReadPost autocommands.
|
||||
*BufLeave*
|
||||
BufLeave Before leaving to another buffer. Also when
|
||||
leaving or closing the current window and the
|
||||
new current window is not for the same buffer.
|
||||
Not used for ":qa" or ":q" when exiting Vim.
|
||||
*BufWinEnter*
|
||||
BufWinEnter After a buffer is displayed in a window. This
|
||||
can be when the buffer is loaded (after
|
||||
processing the modelines), when a hidden
|
||||
buffer is displayed in a window (and is no
|
||||
longer hidden) or a buffer already visible in
|
||||
a window is also displayed in another window.
|
||||
*BufWinLeave*
|
||||
BufWinLeave Before a buffer is removed from a window.
|
||||
Not when it's still visible in another window.
|
||||
Also triggered when exiting. It's triggered
|
||||
before BufUnload or BufHidden.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being unloaded "<afile>".
|
||||
*BufUnload*
|
||||
BufUnload Before unloading a buffer. This is when the
|
||||
text in the buffer is going to be freed. This
|
||||
may be after a BufWritePost and before a
|
||||
BufDelete. Also used for all buffers that are
|
||||
loaded when Vim is going to exit.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being unloaded "<afile>".
|
||||
*BufHidden*
|
||||
BufHidden Just after a buffer has become hidden. That
|
||||
is, when there are no longer windows that show
|
||||
the buffer, but the buffer is not unloaded or
|
||||
deleted. Not used for ":qa" or ":q" when
|
||||
exiting Vim.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being unloaded "<afile>".
|
||||
*BufNew*
|
||||
BufNew Just after creating a new buffer. Also used
|
||||
just after a buffer has been renamed. When
|
||||
the buffer is added to the buffer list BufAdd
|
||||
will be triggered too.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being created "<afile>".
|
||||
*BufCreate* *BufAdd*
|
||||
BufAdd or BufCreate Just after creating a new buffer which is
|
||||
added to the buffer list, or adding a buffer
|
||||
to the buffer list.
|
||||
Also used just after a buffer in the buffer
|
||||
list has been renamed.
|
||||
The BufCreate event is for historic reasons.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being created "<afile>".
|
||||
*BufDelete*
|
||||
BufDelete Before deleting a buffer from the buffer list.
|
||||
The BufUnload may be called first (if the
|
||||
buffer was loaded).
|
||||
Also used just before a buffer in the buffer
|
||||
list is renamed.
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being deleted "<afile>".
|
||||
*BufWipeout*
|
||||
BufWipeout Before completely deleting a buffer. The
|
||||
BufUnload and BufDelete events may be called
|
||||
first (if the buffer was loaded and was in the
|
||||
buffer list). Also used just before a buffer
|
||||
is renamed (also when it's not in the buffer
|
||||
list).
|
||||
NOTE: When this autocommand is executed, the
|
||||
current buffer "%" may be different from the
|
||||
buffer being deleted "<afile>".
|
||||
*GUIEnter*
|
||||
GUIEnter After starting the GUI successfully, and after
|
||||
opening the window. It is triggered before
|
||||
VimEnter when using gvim. Can be used to
|
||||
position the window from a .gvimrc file: >
|
||||
:autocmd GUIEnter * winpos 100 50
|
||||
< *InsertChange*
|
||||
InsertChange When typing <Insert> while in Insert or
|
||||
Replace mode. The |v:insertmode| variable
|
||||
indicates the new mode.
|
||||
Be careful not to move the cursor or do
|
||||
anything else that the user does not expect.
|
||||
*InsertEnter*
|
||||
InsertEnter When starting Insert mode. Also for Replace
|
||||
mode and Virtual Replace mode. The
|
||||
|v:insertmode| variable indicates the mode.
|
||||
Be careful not to move the cursor or do
|
||||
anything else that the user does not expect.
|
||||
*InsertLeave*
|
||||
InsertLeave When leaving Insert mode. Also when using
|
||||
CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
|
||||
*MenuPopup*
|
||||
MenuPopup Just before showing the popup menu (under the
|
||||
right mouse button). Useful for adjusting the
|
||||
menu for what is under the cursor or mouse
|
||||
pointer.
|
||||
The pattern is matched against a single
|
||||
character representing the mode:
|
||||
n Normal
|
||||
v Visual
|
||||
o Operator-pending
|
||||
i Insert
|
||||
c Commmand line
|
||||
*QuickFixCmdPre*
|
||||
QuickFixCmdPre Before a quickfix command is run (|:make|,
|
||||
|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
|
||||
|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
|
||||
|:vimgrepadd|, |:vimgrepadd|). The pattern is
|
||||
matched against the command being run. When
|
||||
|:grep| is used but 'grepprg' is set to
|
||||
"internal" it still matches "grep".
|
||||
This command cannot be used to set the
|
||||
'makeprg' and 'grepprg' variables.
|
||||
If this command causes an error, the quickfix
|
||||
command is not executed.
|
||||
*QuickFixCmdPost*
|
||||
QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
|
||||
command is run.
|
||||
*RemoteReply*
|
||||
RemoteReply When a reply from a Vim that functions as
|
||||
server was received |server2client()|.
|
||||
<amatch> is equal to the {serverid} from which
|
||||
the reply was sent, and <afile> is the actual
|
||||
reply string.
|
||||
Note that even if an autocommand is defined,
|
||||
the reply should be read with |remote_read()|
|
||||
to consume it.
|
||||
*SessionLoadPost*
|
||||
SessionLoadPost After loading the session file created using
|
||||
the |:mksession| command.
|
||||
*SpellFileMissing*
|
||||
SpellFileMissing When trying to load a spell checking file and
|
||||
it can't be found. <amatch> is the language,
|
||||
'encoding' also matters. See
|
||||
|spell-SpellFileMissing|.
|
||||
*StdinReadPost*
|
||||
StdinReadPost After reading from the stdin into the buffer,
|
||||
before executing the modelines. Only used
|
||||
when the "-" argument was used when Vim was
|
||||
started |--|.
|
||||
*StdinReadPre*
|
||||
StdinReadPre Before reading from stdin into the buffer.
|
||||
Only used when the "-" argument was used when
|
||||
Vim was started |--|.
|
||||
*SwapExists*
|
||||
SwapExists Detected an existing swap file when starting
|
||||
to edit a file. Only when it is possible to
|
||||
select a way to handle the situation, when Vim
|
||||
would ask the user what to do.
|
||||
The |v:swapname| variable holds the name of
|
||||
the swap file found, <afile> the file being
|
||||
edited. |v:swapcommand| may contain a command
|
||||
to be executed in the opened file.
|
||||
The commands should set the |v:swapchoice|
|
||||
variable to a string with one character to
|
||||
tell Vim what should be done next:
|
||||
'o' open read-only
|
||||
'e' edit the file anyway
|
||||
'r' recover
|
||||
'd' delete the swap file
|
||||
'q' quit, don't edit the file
|
||||
'a' abort, like hitting CTRL-C
|
||||
When set to an empty string the user will be
|
||||
asked, as if there was no SwapExists autocmd.
|
||||
Note: Do not try to change the buffer, the
|
||||
results are unpredictable.
|
||||
*Syntax*
|
||||
Syntax When the 'syntax' option has been set.
|
||||
<afile> can be used for the name of the file
|
||||
where this option was set, and <amatch> for
|
||||
the new value of 'syntax'.
|
||||
See |:syn-on|.
|
||||
*TabEnter*
|
||||
TabEnter Just after entering a tab page. |tab-page|
|
||||
Before triggering the WinEnter and BufEnter
|
||||
events.
|
||||
*TabLeave*
|
||||
TabLeave Just before leaving a tab page. |tab-page|
|
||||
A WinLeave event will have been triggered
|
||||
first.
|
||||
*TermChanged*
|
||||
TermChanged After the value of 'term' has changed. Useful
|
||||
for re-loading the syntax file to update the
|
||||
colors, fonts and other terminal-dependent
|
||||
settings. Executed for all loaded buffers.
|
||||
*TermResponse*
|
||||
TermResponse After the response to |t_RV| is received from
|
||||
the terminal. The value of |v:termresponse|
|
||||
can be used to do things depending on the
|
||||
terminal version.
|
||||
*User*
|
||||
User Never executed automatically. To be used for
|
||||
autocommands that are only executed with
|
||||
":doautocmd".
|
||||
*UserGettingBored*
|
||||
UserGettingBored When the user hits CTRL-C. Just kidding! :-)
|
||||
*VimEnter*
|
||||
VimEnter After doing all the startup stuff, including
|
||||
loading .vimrc files, executing the "-c cmd"
|
||||
arguments, creating all windows and loading
|
||||
the buffers in them.
|
||||
*VimLeave*
|
||||
VimLeave Before exiting Vim, just after writing the
|
||||
.viminfo file. Executed only once, like
|
||||
VimLeavePre.
|
||||
To detect an abnormal exit use |v:dying|.
|
||||
*VimLeavePre*
|
||||
VimLeavePre Before exiting Vim, just before writing the
|
||||
.viminfo file. This is executed only once,
|
||||
if there is a match with the name of what
|
||||
happens to be the current buffer when exiting.
|
||||
Mostly useful with a "*" pattern. >
|
||||
:autocmd VimLeavePre * call CleanupStuff()
|
||||
< To detect an abnormal exit use |v:dying|.
|
||||
*WinEnter*
|
||||
WinEnter After entering another window. Not done for
|
||||
the first window, when Vim has just started.
|
||||
@@ -457,142 +766,6 @@ WinLeave Before leaving a window. If the window to be
|
||||
executes the BufLeave autocommands before the
|
||||
WinLeave autocommands (but not for ":new").
|
||||
Not used for ":qa" or ":q" when exiting Vim.
|
||||
*CmdwinEnter*
|
||||
CmdwinEnter After entering the command-line window.
|
||||
Useful for setting options specifically for
|
||||
this special type of window. This is
|
||||
triggered _instead_ of BufEnter and WinEnter.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*CmdwinLeave*
|
||||
CmdwinLeave Before leaving the command-line window.
|
||||
Useful to clean up any global setting done
|
||||
with CmdwinEnter. This is triggered _instead_
|
||||
of BufLeave and WinLeave.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*GUIEnter*
|
||||
GUIEnter After starting the GUI successfully, and after
|
||||
opening the window. It is triggered before
|
||||
VimEnter when using gvim. Can be used to
|
||||
position the window from a .gvimrc file: >
|
||||
:autocmd GUIEnter * winpos 100 50
|
||||
< *VimEnter*
|
||||
VimEnter After doing all the startup stuff, including
|
||||
loading .vimrc files, executing the "-c cmd"
|
||||
arguments, creating all windows and loading
|
||||
the buffers in them.
|
||||
*VimLeavePre*
|
||||
VimLeavePre Before exiting Vim, just before writing the
|
||||
.viminfo file. This is executed only once,
|
||||
if there is a match with the name of what
|
||||
happens to be the current buffer when exiting.
|
||||
Mostly useful with a "*" pattern. >
|
||||
:autocmd VimLeavePre * call CleanupStuff()
|
||||
< To detect an abnormal exit use |v:dying|.
|
||||
*VimLeave*
|
||||
VimLeave Before exiting Vim, just after writing the
|
||||
.viminfo file. Executed only once, like
|
||||
VimLeavePre.
|
||||
To detect an abnormal exit use |v:dying|.
|
||||
*EncodingChanged*
|
||||
EncodingChanged Fires off after the 'encoding' option has been
|
||||
changed. Useful to set up fonts, for example.
|
||||
*InsertEnter*
|
||||
InsertEnter When starting Insert mode. Also for Replace
|
||||
mode and Virtual Replace mode. The
|
||||
|v:insertmode| variable indicates the mode.
|
||||
Be careful not to move the cursor or do
|
||||
anything else that the user does not expect.
|
||||
*InsertChange*
|
||||
InsertChange When typing <Insert> while in Insert or
|
||||
Replace mode. The |v:insertmode| variable
|
||||
indicates the new mode.
|
||||
Be careful not to move the cursor or do
|
||||
anything else that the user does not expect.
|
||||
*InsertLeave*
|
||||
InsertLeave When leaving Insert mode. Also when using
|
||||
CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
|
||||
*FileEncoding*
|
||||
FileEncoding Obsolete. It still works and is equivalent
|
||||
to |EncodingChanged|.
|
||||
*ColorScheme*
|
||||
ColorScheme After loading a color scheme. |:colorscheme|
|
||||
*RemoteReply*
|
||||
RemoteReply When a reply from a Vim that functions as
|
||||
server was received |server2client()|.
|
||||
<amatch> is equal to the {serverid} from which
|
||||
the reply was sent, and <afile> is the actual
|
||||
reply string.
|
||||
Note that even if an autocommand is defined,
|
||||
the reply should be read with |remote_read()|
|
||||
to consume it.
|
||||
*TermChanged*
|
||||
TermChanged After the value of 'term' has changed. Useful
|
||||
for re-loading the syntax file to update the
|
||||
colors, fonts and other terminal-dependent
|
||||
settings. Executed for all loaded buffers.
|
||||
*TermResponse*
|
||||
TermResponse After the response to |t_RV| is received from
|
||||
the terminal. The value of |v:termresponse|
|
||||
can be used to do things depending on the
|
||||
terminal version.
|
||||
QuickFixCmdPre *QuickFixCmdPre*
|
||||
Before a quickfix command is run (|:make|,
|
||||
|:grep|, |:grepadd|, |:vimgrep|,
|
||||
|:vimgrepadd|). The pattern is matched against
|
||||
the command being run. When |:grep| is used
|
||||
but 'grepprg' is set to "internal" it still
|
||||
matches "grep".
|
||||
This command cannot be used to set the
|
||||
'makeprg' and 'grepprg' variables.
|
||||
If this command causes an error, the quickfix
|
||||
command is not executed.
|
||||
QuickFixCmdPost *QuickFixCmdPost*
|
||||
like QuickFixCmdPre, but after a quickfix
|
||||
command is run.
|
||||
*MenuPopup*
|
||||
MenuPopup Just before showing the popup menu (under the
|
||||
right mouse button). Useful for adjusting the
|
||||
menu for what is under the cursor or mouse
|
||||
pointer.
|
||||
The pattern is matched against a single
|
||||
character representing the mode:
|
||||
n Normal
|
||||
v Visual
|
||||
o Operator-pending
|
||||
i Insert
|
||||
c Commmand line
|
||||
*UserGettingBored*
|
||||
UserGettingBored When the user hits CTRL-C. Just kidding! :-)
|
||||
*User*
|
||||
User Never executed automatically. To be used for
|
||||
autocommands that are only executed with
|
||||
":doautocmd".
|
||||
|
||||
You can specify a comma-separated list of event names. No white space can be
|
||||
used in this list. The command applies to all the events in the list.
|
||||
|
||||
For READING FILES there are four kinds of events possible:
|
||||
BufNewFile starting to edit a non-existent file
|
||||
BufReadPre BufReadPost starting to edit an existing file
|
||||
FilterReadPre FilterReadPost read the temp file with filter output
|
||||
FileReadPre FileReadPost any other file read
|
||||
Vim uses only one of these four kinds when reading a file. The "Pre" and
|
||||
"Post" events are both triggered, before and after reading the file.
|
||||
|
||||
Note that the autocommands for the *ReadPre events and all the Filter events
|
||||
are not allowed to change the current buffer (you will get an error message if
|
||||
this happens). This is to prevent the file to be read into the wrong buffer.
|
||||
|
||||
Note that the 'modified' flag is reset AFTER executing the BufReadPost
|
||||
and BufNewFile autocommands. But when the 'modified' option was set by the
|
||||
autocommands, this doesn't happen.
|
||||
|
||||
You can use the 'eventignore' option to ignore a number of events or all
|
||||
events.
|
||||
|
||||
==============================================================================
|
||||
6. Patterns *autocmd-patterns* *{pat}*
|
||||
@@ -810,6 +983,10 @@ option will not cause any commands to be executed.
|
||||
autocommands for that group. Note: if you use an
|
||||
undefined group name, Vim gives you an error message.
|
||||
|
||||
After applying the autocommands the modelines are
|
||||
processed, so that their overrule the settings from
|
||||
autocommands, like what happens when editing a file.
|
||||
|
||||
*:doautoa* *:doautoall*
|
||||
:doautoa[ll] [group] {event} [fname]
|
||||
Like ":doautocmd", but apply the autocommands to each
|
||||
@@ -916,10 +1093,8 @@ It's possible to use the ":au" command in an autocommand. This can be a
|
||||
self-modifying command! This can be useful for an autocommand that should
|
||||
execute only once.
|
||||
|
||||
There is currently no way to disable the autocommands. If you want to write a
|
||||
file without executing the autocommands for that type of file, write it under
|
||||
another name and rename it with a shell command. In some situations you can
|
||||
use the 'eventignore' option.
|
||||
If you want to skip autocommands for one command, use the |:noautocmd| command
|
||||
modifier or the 'eventignore' option.
|
||||
|
||||
Note: When reading a file (with ":read file" or with a filter command) and the
|
||||
last line in the file does not have an <EOL>, Vim remembers this. At the next
|
||||
@@ -1036,5 +1211,22 @@ The |v:cmdbang| variable is one when "!" was used, zero otherwise.
|
||||
|
||||
See the $VIMRUNTIME/plugin/netrw.vim for examples.
|
||||
|
||||
==============================================================================
|
||||
11. Disabling autocommands *autocmd-disable*
|
||||
|
||||
To disable autocommands for some time use the 'eventignore' option. Note that
|
||||
this may cause unexpected behavior, make sure you restore 'eventignore'
|
||||
afterwards, using a |:try| block with |:finally|.
|
||||
|
||||
*:noautocmd* *:noa*
|
||||
To disable autocommands for just one command use the ":noautocmd" command
|
||||
modifier. This will set 'eventignore' to "all" for the duration of the
|
||||
following command. Example: >
|
||||
|
||||
:noautocmd w fname.gz
|
||||
|
||||
This will write the file without triggering the autocommands defined by the
|
||||
gzip plugin.
|
||||
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 7.0aa. Last change: 2005 Aug 14
|
||||
*change.txt* For Vim version 7.0aa. Last change: 2006 Feb 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -503,6 +503,8 @@ comment (starting with '"') after the ":!" command.
|
||||
temporary file and then reads the file into the
|
||||
buffer. Vim uses the 'shellredir' option to redirect
|
||||
the filter output to the temporary file.
|
||||
However, if the 'shelltemp' option is off then pipes
|
||||
are used when possible (on Unix).
|
||||
When the 'R' flag is included in 'cpoptions' marks in
|
||||
the filtered lines are deleted, unless the
|
||||
|:keepmarks| command is used. Example: >
|
||||
@@ -1087,7 +1089,8 @@ register. {not in Vi}
|
||||
7. Selection and drop registers "*, "+ and "~
|
||||
Use these register for storing and retrieving the selected text for the GUI.
|
||||
See |quotestar| and |quoteplus|. When the clipboard is not available or not
|
||||
working, the unnamed register is used instead. {not in Vi}
|
||||
working, the unnamed register is used instead. For Unix systems the clipboard
|
||||
is only available when the |+xterm_clipboard| feature is present. {not in Vi}
|
||||
|
||||
Note that there is only a distinction between "* and "+ for X11 systems. For
|
||||
an explanation of the difference, see |x11-selection|. Under MS-Windows, use
|
||||
@@ -1165,12 +1168,18 @@ The next three commands always work on whole lines.
|
||||
|
||||
*gq*
|
||||
gq{motion} Format the lines that {motion} moves over.
|
||||
If 'formatprg' is empty formatting is done internally
|
||||
and the 'textwidth' option controls the length of each
|
||||
formatted line (see below).
|
||||
Formatting is done with one of three methods:
|
||||
1. If 'formatexpr' is not empty the expression is
|
||||
evaluated. This can differ for each buffer.
|
||||
2. If 'formatprg' is not empty an external program
|
||||
is used.
|
||||
3. Otherise formatting is done internally.
|
||||
|
||||
In the third case the 'textwidth' option controls the
|
||||
length of each formatted line (see below).
|
||||
If the 'textwidth' option is 0, the formatted line
|
||||
length is the screen width (with a maximum width of
|
||||
79). {not in Vi}
|
||||
79).
|
||||
The 'formatoptions' option controls the type of
|
||||
formatting |fo-table|.
|
||||
The cursor is left on the first non-blank of the last
|
||||
@@ -1190,8 +1199,8 @@ gqq Format the current line. {not in Vi}
|
||||
*gw*
|
||||
gw{motion} Format the lines that {motion} moves over. Similar to
|
||||
|gq| but puts the cursor back at the same position in
|
||||
the text. However, 'formatprg' is not used.
|
||||
{not in Vi}
|
||||
the text. However, 'formatprg' and 'formatexpr' are
|
||||
not used. {not in Vi}
|
||||
|
||||
gwgw *gwgw* *gww*
|
||||
gww Format the current line as with "gw". {not in Vi}
|
||||
@@ -1222,9 +1231,10 @@ white space!).
|
||||
|
||||
The 'joinspaces' option is used when lines are joined together.
|
||||
|
||||
You can set the 'formatprg' option to the name of an external program for Vim
|
||||
to use for text formatting. The 'textwidth' and other options have no effect
|
||||
on formatting by an external program.
|
||||
You can set the 'formatexpr' option to an expression or the 'formatprg' option
|
||||
to the name of an external program for Vim to use for text formatting. The
|
||||
'textwidth' and other options have no effect on formatting by an external
|
||||
program.
|
||||
|
||||
*right-justify*
|
||||
There is no command in Vim to right justify text. You can do it with
|
||||
@@ -1493,8 +1503,9 @@ Vim has a sorting function and a sorting command. The sorting function can be
|
||||
found here: |sort()|.
|
||||
|
||||
*:sor* *:sort*
|
||||
:[range]sor[t][!] [i] [u] [/{pattern}/]
|
||||
Sort lines in [range].
|
||||
:[range]sor[t][!] [i][u][n][x][o] [/{pattern}/]
|
||||
Sort lines in [range]. When no range is given all
|
||||
lines are sorted.
|
||||
|
||||
With [!] the order is reversed.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 7.0aa. Last change: 2005 Jul 05
|
||||
*cmdline.txt* For Vim version 7.0aa. Last change: 2006 Feb 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -153,6 +153,9 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
|
||||
*c_CTRL-R_=*
|
||||
'=' the expression register: you are prompted to
|
||||
enter an expression (see |expression|)
|
||||
(doesn't work at the expression prompt; some
|
||||
things such as changing the buffer or current
|
||||
window are not allowed to avoid side effects)
|
||||
See |registers| about registers. {not in Vi}
|
||||
Implementation detail: When using the |expression| register
|
||||
and invoking setcmdpos(), this sets the position before
|
||||
@@ -191,10 +194,13 @@ CTRL-\ e {expr} *c_CTRL-\_e*
|
||||
to finish it. It's most useful in mappings though. See
|
||||
|expression|.
|
||||
See |c_CTRL-R_=| for inserting the result of an expression.
|
||||
Useful functions are |getcmdline()| and |getcmdpos()|.
|
||||
Useful functions are |getcmdtype()|, |getcmdline()| and
|
||||
|getcmdpos()|.
|
||||
The cursor position is unchanged, except when the cursor was
|
||||
at the end of the line, then it stays at the end.
|
||||
|setcmdpos()| can be used to set the cursor position.
|
||||
The |sandbox| is used for evaluating the expression to avoid
|
||||
nasty side effects.
|
||||
Example: >
|
||||
:cmap <F7> <C-\>eAppendSome()<CR>
|
||||
:func AppendSome()
|
||||
@@ -203,7 +209,9 @@ CTRL-\ e {expr} *c_CTRL-\_e*
|
||||
:call setcmdpos(strlen(cmd))
|
||||
:return cmd
|
||||
:endfunc
|
||||
<
|
||||
< This doesn't work recursively, thus not when already editing
|
||||
an expression.
|
||||
|
||||
*c_CTRL-Y*
|
||||
CTRL-Y When there is a modeless selection, copy the selection into
|
||||
the clipboard. |modeless-selection|
|
||||
@@ -471,6 +479,7 @@ followed by another command:
|
||||
:global
|
||||
:help
|
||||
:helpfind
|
||||
:lcscope
|
||||
:make
|
||||
:normal
|
||||
:perl
|
||||
@@ -558,7 +567,7 @@ argument for the command, which has a different meaning. For example:
|
||||
"name"
|
||||
|
||||
==============================================================================
|
||||
4. Ex command-line ranges *cmdline-ranges* *[range]* *E16* *E493*
|
||||
4. Ex command-line ranges *cmdline-ranges* *[range]* *E16*
|
||||
|
||||
Some Ex commands accept a line range in front of them. This is noted as
|
||||
[range]. It consists of one or more line specifiers, separated with ',' or
|
||||
@@ -644,11 +653,15 @@ When folds are active the line numbers are rounded off to include the whole
|
||||
closed fold. See |fold-behavior|.
|
||||
|
||||
|
||||
Reverse Range
|
||||
Reverse Range *E493*
|
||||
|
||||
A range should have the lower line number first. If this is not the case, Vim
|
||||
will ask you if it should swap the line numbers. This is not done within the
|
||||
global command ":g".
|
||||
will ask you if it should swap the line numbers.
|
||||
Backwards range given, OK to swap ~
|
||||
This is not done within the global command ":g".
|
||||
|
||||
You can use ":silent" before a command to avoid the question, the range will
|
||||
always be swapped then.
|
||||
|
||||
|
||||
Count and Range *N:*
|
||||
@@ -684,6 +697,12 @@ output.
|
||||
==============================================================================
|
||||
6. Ex special characters *cmdline-special*
|
||||
|
||||
Note: These are special characters in the executed command line. If you want
|
||||
to insert special things while typing you can use the CTRL-R command. For
|
||||
example, "%" stands for the current file name, while CTRL-R % inserts the
|
||||
current file name right away. See |c_CTRL-R|.
|
||||
|
||||
|
||||
In Ex commands, at places where a file name can be used, the following
|
||||
characters have a special meaning. These can also be used in the expression
|
||||
function expand() |expand()|.
|
||||
@@ -728,7 +747,7 @@ Note: these are typed literally, they are not special keys!
|
||||
<amatch> when executing autocommands, is replaced with the match for
|
||||
which this autocommand was executed. It differs from
|
||||
<afile> only when the file name isn't used to match with
|
||||
(for FileType and Syntax events).
|
||||
(for FileType, Syntax and SpellFileMissing events).
|
||||
<sfile> when executing a ":source" command, is replaced with the
|
||||
file name of the sourced file;
|
||||
when executing a function, is replaced with
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*debug.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
*debug.txt* For Vim version 7.0aa. Last change: 2005 Dec 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -7,6 +7,7 @@
|
||||
Debugging Vim *debug-vim*
|
||||
|
||||
This is for debugging Vim itself, when it doesn't work properly.
|
||||
For debugging Vim scripts, functions, etc. see |debug-scripts|
|
||||
|
||||
1. Location of a crash, using gcc and gdb |debug-gcc|
|
||||
2. Windows Bug Reporting |debug-win32|
|
||||
@@ -61,9 +62,9 @@ This includes the WinDbg debugger.
|
||||
If you have Visual Studio, use that instead of the VC Toolkit
|
||||
and WinDbg.
|
||||
|
||||
|
||||
(No idea what to do if your binary was built with the Borland or Cygwin
|
||||
compilers. Sorry.)
|
||||
For other compilers, you should always use the corresponding debugger: TD for
|
||||
a Vim executable compiled with the Borland compiler; gdb (see above
|
||||
|debug-gcc|) for the Cygwin and MinGW compilers.
|
||||
|
||||
=========================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*develop.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
*develop.txt* For Vim version 7.0aa. Last change: 2006 Jan 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -382,8 +382,8 @@ checking engine in Vim, for various reasons:
|
||||
them separately from Vim. That's mostly not impossible, but a drawback.
|
||||
- Performance: A few tests showed that it's possible to check spelling on the
|
||||
fly (while redrawing), just like syntax highlighting. But the mechanisms
|
||||
used by other code are much slower. Myspell uses a simplistic hashtable,
|
||||
for example.
|
||||
used by other code are much slower. Myspell uses a hashtable, for example.
|
||||
The affix compression that most spell checkers use makes it slower too.
|
||||
- For using an external program like aspell a communication mechanism would
|
||||
have to be setup. That's complicated to do in a portable way (Unix-only
|
||||
would be relatively simple, but that's not good enough). And performance
|
||||
@@ -399,14 +399,88 @@ checking engine in Vim, for various reasons:
|
||||
another program or library would be acceptable. But the word lists probably
|
||||
differ, the suggestions may be wrong words.
|
||||
|
||||
|
||||
Spelling suggestions *develop-spell-suggestions*
|
||||
|
||||
For making suggestions there are two basic mechanisms:
|
||||
1. Try changing the bad word a little bit and check for a match with a good
|
||||
word. Or go through the list of good words, change them a little bit and
|
||||
check for a match with the bad word. The changes are deleting a character,
|
||||
inserting a character, swapping two characters, etc.
|
||||
2. Perform soundfolding on both the bad word and the good words and then find
|
||||
matches, possibly with a few changes like with the first mechanism.
|
||||
|
||||
The first is good for finding typing mistakes. After experimenting with
|
||||
hashtables and looking at solutions from other spell checkers the conclusion
|
||||
was that a trie (a kind of tree structure) is ideal for this. Both for
|
||||
reducing memory use and being able to try sensible changes. For example, when
|
||||
inserting a character only characters that lead to good words need to be
|
||||
tried. Other mechanisms (with hashtables) need to try all possible letters at
|
||||
every position in the word. Also, a hashtable has the requirement that word
|
||||
boundaries are identified separately, while a trie does not require this.
|
||||
That makes the mechanism a lot simpler.
|
||||
|
||||
Soundfolding is useful when someone knows how the words sounds but doesn't
|
||||
know how it is spelled. For example, the word "dictionary" might be written
|
||||
as "daktonerie". The number of changes that the first method would need to
|
||||
try is very big, it's hard to find the good word that way. After soundfolding
|
||||
the words become "tktnr" and "tkxnry", these differ by only two letters.
|
||||
|
||||
To find words by their soundfolded equivalent (soundalike word) we need a list
|
||||
of all soundfolded words. A few experiments have been done to find out what
|
||||
the best method is. Alternatives:
|
||||
1. Do the sound folding on the fly when looking for suggestions. This means
|
||||
walking through the trie of good words, soundfolding each word and
|
||||
checking how different it is from the bad word. This is very efficient for
|
||||
memory use, but takes a long time. On a fast PC it takes a couple of
|
||||
seconds for English, which can be acceptable for interactive use. But for
|
||||
some languages it takes more than ten seconds (e.g., German, Catalan),
|
||||
which is unacceptable slow. For batch processing (automatic corrections)
|
||||
it's to slow for all languages.
|
||||
2. Use a trie for the soundfolded words, so that searching can be done just
|
||||
like how it works without soundfolding. This requires remembering a list
|
||||
of good words for each soundfolded word. This makes finding matches very
|
||||
fast but requires quite a lot of memory, in the order of 1 to 10 Mbyte.
|
||||
For some languages more than the original word list.
|
||||
3. Like the second alternative, but reduce the amount of memory by using affix
|
||||
compression and store only the soundfolded basic word. This is what Aspell
|
||||
does. Disadvantage is that affixes need to be stripped from the bad word
|
||||
before soundfolding it, which means that mistakes at the start and/or end
|
||||
of the word will cause the mechanism to fail. Also, this becomes slow when
|
||||
the bad word is quite different from the good word.
|
||||
|
||||
The choice made is to use the second mechanism and use a separate file. This
|
||||
way a user with sufficient memory can get very good suggestions while a user
|
||||
who is short of memory or just wants the spell checking and no suggestions
|
||||
doesn't use so much memory.
|
||||
|
||||
|
||||
Word frequency
|
||||
|
||||
For sorting suggestions it helps to know which words are common. In theory we
|
||||
could store a word frequency with the word in the dictionary. However, this
|
||||
requires storing a count per word. That degrades word tree compression a lot.
|
||||
And maintaining the word frequency for all languages will be a heavy task.
|
||||
Also, it would be nice to prefer words that are already in the text. This way
|
||||
the words that appear in the specific text are preferred for suggestions.
|
||||
|
||||
What has been implemented is to count words that have been seen during
|
||||
displaying. A hashtable is used to quickly find the word count. The count is
|
||||
initialized from words listed in COMMON items in the affix file, so that it
|
||||
also works when starting a new file.
|
||||
|
||||
This isn't ideal, because the longer Vim is running the higher the counts
|
||||
become. But in practice it is a noticable improvement over not using the word
|
||||
count.
|
||||
|
||||
==============================================================================
|
||||
4. Assumptions *design-assumptions*
|
||||
|
||||
Size of variables:
|
||||
char 8 bit signed
|
||||
char_u 8 bit unsigned
|
||||
int 16, 32 or 64 bit signed
|
||||
unsigned 16, 32 or 64 bit unsigned
|
||||
int 32 or 64 bit signed (16 might be possible with limited features)
|
||||
unsigned 32 or 64 bit unsigned (16 as with ints)
|
||||
long 32 or 64 bit signed, can hold a pointer
|
||||
|
||||
Note that some compilers cannot handle long lines or strings. The C89
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*diff.txt* For Vim version 7.0aa. Last change: 2005 Apr 26
|
||||
*diff.txt* For Vim version 7.0aa. Last change: 2006 Feb 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -41,6 +41,10 @@ the file.
|
||||
|
||||
This only works when a standard "diff" command is available. See 'diffexpr'.
|
||||
|
||||
Diffs are local to the current tab page |tab-page|. You can't see diffs with
|
||||
a window in another tab page. This does make it possible to have several
|
||||
diffs at the same time, each in their own tab page.
|
||||
|
||||
What happens is that Vim opens a window for each of the files. This is like
|
||||
using the |-O| argument. This uses vertical splits. If you prefer horizontal
|
||||
splits add the |-o| argument: >
|
||||
@@ -113,7 +117,7 @@ file for a moment and come back to the same file and be in diff mode again.
|
||||
*:diffo* *:diffoff*
|
||||
:diffoff Switch off diff mode for the current window.
|
||||
|
||||
:diffoff! Switch off diff mode for all windows.
|
||||
:diffoff! Switch off diff mode for all windows in the current tab page.
|
||||
|
||||
The ":diffoff" command resets the relevant options to their default value.
|
||||
This may be different from what the values were before diff mode was started,
|
||||
@@ -218,7 +222,7 @@ It is an error if there is no change for the cursor to move to.
|
||||
|
||||
==============================================================================
|
||||
4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103*
|
||||
|
||||
*merge*
|
||||
There are two commands to copy text from one buffer to another. The result is
|
||||
that the buffers will be equal within the specified range.
|
||||
|
||||
@@ -235,6 +239,8 @@ that the buffers will be equal within the specified range.
|
||||
Modify another buffer to undo difference with the current
|
||||
buffer. Just like ":diffget" but the other buffer is modified
|
||||
instead of the current one.
|
||||
When [bufspec] is omitted and there is more than one other
|
||||
buffer in diff mode where 'modifiable' is set this fails.
|
||||
See below for [range].
|
||||
|
||||
*do*
|
||||
@@ -343,8 +349,8 @@ get an error message. Possible causes:
|
||||
- The 'shell' and associated options are not set correctly. Try if filtering
|
||||
works with a command like ":!sort".
|
||||
- You are using 'diffexpr' and it doesn't work.
|
||||
If it's not clear what the problem is set the 'verbose' option to see more
|
||||
messages.
|
||||
If it's not clear what the problem is set the 'verbose' option to one or more
|
||||
to see more messages.
|
||||
|
||||
The self-installing Vim includes a diff program. If you don't have it you
|
||||
might want to download a diff.exe. For example from
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*digraph.txt* For Vim version 7.0aa. Last change: 2005 Mar 06
|
||||
*digraph.txt* For Vim version 7.0aa. Last change: 2005 Sep 11
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -166,7 +166,8 @@ EURO
|
||||
Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was
|
||||
added for this. Note the difference between latin1, where the digraph Cu is
|
||||
used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is
|
||||
used for the euro sign, while both of them are the character 164, 0xa4.
|
||||
used for the euro sign, while both of them are the character 164, 0xa4. For
|
||||
compatibility with zsh Eu can also be used for the euro sign.
|
||||
|
||||
*digraph-table*
|
||||
char digraph hex dec official name ~
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 7.0aa. Last change: 2005 Jul 25
|
||||
*editing.txt* For Vim version 7.0aa. Last change: 2006 Feb 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -155,11 +155,14 @@ Technical: On the Amiga you can use 30 characters for a file name. But on an
|
||||
When you started editing without giving a file name, "No File" is displayed in
|
||||
messages. If the ":write" command is used with a file name argument, the file
|
||||
name for the current file is set to that file name. This only happens when
|
||||
the 'F' flag is included in 'cpoptions' (by default it is included). This is
|
||||
useful when entering text in an empty buffer and then writing it to a file.
|
||||
If 'cpoptions' contains the 'f' flag (by default it is NOT included) the file
|
||||
name is set for the ":read file" command. This is useful when starting Vim
|
||||
without an argument and then doing ":read file" to start editing a file.
|
||||
the 'F' flag is included in 'cpoptions' (by default it is included) |cpo-F|.
|
||||
This is useful when entering text in an empty buffer and then writing it to a
|
||||
file. If 'cpoptions' contains the 'f' flag (by default it is NOT included)
|
||||
|cpo-f| the file name is set for the ":read file" command. This is useful
|
||||
when starting Vim without an argument and then doing ":read file" to start
|
||||
editing a file.
|
||||
When the file name was set and 'filetype' is empty the filetype detection
|
||||
autocommands will be triggered.
|
||||
*not-edited*
|
||||
Because the file name was set without really starting to edit that file, you
|
||||
are protected from overwriting that file. This is done by setting the
|
||||
@@ -331,6 +334,22 @@ CTRL-^ Edit the alternate file (equivalent to ":e #").
|
||||
(For {Visual} see |Visual-mode|.)
|
||||
{not in VI}
|
||||
|
||||
*gF*
|
||||
[count]gF Same as "gf", except if a number follows the file
|
||||
name, then the cursor is positioned on that line in
|
||||
the file. The file name and the number must be
|
||||
separated by a non-filename (see 'isfname') and
|
||||
non-numeric character. White space between the
|
||||
filename, the separator and the number are ignored.
|
||||
Examples: >
|
||||
eval.c:10
|
||||
eval.c @ 20
|
||||
eval.c (30)
|
||||
eval.c 40
|
||||
<
|
||||
*v_gF*
|
||||
{Visual}[count]gF Same as "v_gf".
|
||||
|
||||
These commands are used to start editing a single file. This means that the
|
||||
file is read into the buffer and the current file name is set. The file that
|
||||
is opened depends on the current directory, see |:cd|.
|
||||
@@ -398,8 +417,9 @@ The expression can contain just about anything, thus this can also be used to
|
||||
avoid the special meaning of '"', '|', '%' and '#'.
|
||||
|
||||
*++opt* *[++opt]*
|
||||
The [++opt] argument can be used to force the value of 'fileformat' or
|
||||
'fileencoding' to a value for one command. The form is: >
|
||||
The [++opt] argument can be used to force the value of 'fileformat',
|
||||
'fileencoding' or 'binary' to a value for one command, and to specify the
|
||||
behavior for bad characters. The form is: >
|
||||
++{optname}={value}
|
||||
|
||||
Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin*
|
||||
@@ -407,6 +427,7 @@ Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin*
|
||||
enc or encoding overrides 'fileencoding'
|
||||
bin or binary sets 'binary'
|
||||
nobin or nobinary resets 'binary'
|
||||
bad specifies behavior for bad characters
|
||||
|
||||
{value} cannot contain white space. It can be any valid value for these
|
||||
options. Examples: >
|
||||
@@ -416,12 +437,24 @@ This edits the same file again with 'fileformat' set to "unix". >
|
||||
:w ++enc=latin1 newfile
|
||||
This writes the current buffer to "newfile" in latin1 format.
|
||||
|
||||
There may be several ++opt arguments, separated by white space. They must all
|
||||
appear before any |+cmd| argument.
|
||||
|
||||
*++bad*
|
||||
The argument of "++bad=" specifies what happens with characters that can't be
|
||||
converted and illegal bytes. It can be one of three things:
|
||||
++bad=X A single-byte character that replaces each bad character.
|
||||
++bad=keep Keep bad characters without conversion. Note that this may
|
||||
result in illegal bytes in your text!
|
||||
++bad=drop Remove the bad characters.
|
||||
|
||||
The default is like "++bad=?": Replace each bad character with a question
|
||||
mark.
|
||||
|
||||
Note that when reading, the 'fileformat' and 'fileencoding' options will be
|
||||
set to the used format. When writing this doesn't happen, thus a next write
|
||||
will use the old value of the option. Same for the 'binary' option.
|
||||
|
||||
There may be several ++opt arguments, separated by white space. They must all
|
||||
appear before any |+cmd| argument.
|
||||
|
||||
*+cmd* *[+cmd]*
|
||||
The [+cmd] argument can be used to position the cursor in the newly opened
|
||||
@@ -786,7 +819,7 @@ USING THE ARGUMENT LIST
|
||||
each file.
|
||||
{not in Vi} {not available when compiled without the
|
||||
|+listcmds| feature}
|
||||
Also see |:windo| and |:bufdo|.
|
||||
Also see |:windo|, |:tabdo| and |:bufdo|.
|
||||
|
||||
Example: >
|
||||
:args *.c
|
||||
@@ -860,6 +893,8 @@ used, for example, when the write fails and you want to try again later with
|
||||
the filename of the current buffer to {file}. The
|
||||
previous name is used for the alternate file name.
|
||||
The [!] is needed to overwrite an existing file.
|
||||
When 'filetype' is empty filetype detection is done
|
||||
with the new name, before the file is written.
|
||||
{not in Vi}
|
||||
|
||||
*:up* *:update*
|
||||
@@ -995,6 +1030,9 @@ The names can be in upper- or lowercase.
|
||||
Vim refuses to |abandon| the current buffer, and when
|
||||
the last file in the argument list has not been
|
||||
edited.
|
||||
If there are other tab pages and quitting the last
|
||||
window in the current tab page the current tab page is
|
||||
closed |tab-page|.
|
||||
|
||||
:conf[irm] q[uit] Quit, but give prompt when changes have been made, or
|
||||
the last file in the argument list has not been
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Aug 30
|
||||
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Sep 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -184,7 +184,8 @@ A. If you want to overrule all default file type checks.
|
||||
< 3. To use the new filetype detection you must restart Vim.
|
||||
|
||||
The files in the "ftdetect" directory are used after all the default
|
||||
checks, thus they can overrule a previously detected file type.
|
||||
checks, thus they can overrule a previously detected file type. But you
|
||||
can also use |:setfiletype| to keep a previously detected filetype.
|
||||
|
||||
B. If you want to detect your file after the default file type checks.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*fold.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*fold.txt* For Vim version 7.0aa. Last change: 2005 Sep 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -512,7 +512,8 @@ FOLDCOLUMN *fold-foldcolumn*
|
||||
|
||||
'foldcolumn' is a number, which sets the width for a column on the side of the
|
||||
window to indicate folds. When it is zero, there is no foldcolumn. A normal
|
||||
value is 4 or 5. The minimal useful value is 2. The maximum is 12.
|
||||
value is 4 or 5. The minimal useful value is 2, although 1 still provides
|
||||
some information. The maximum is 12.
|
||||
|
||||
An open fold is indicated with a column that has a '-' at the top and '|'
|
||||
characters below it. This column stops where the open fold stops. When folds
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui.txt* For Vim version 7.0aa. Last change: 2005 Aug 07
|
||||
*gui.txt* For Vim version 7.0aa. Last change: 2006 Feb 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -24,9 +24,9 @@ Other GUI documentation:
|
||||
1. Starting the GUI *gui-start* *E229* *E233*
|
||||
|
||||
First you must make sure you actually have a version of Vim with the GUI code
|
||||
included. You can check this with the ":version" command, it should include
|
||||
"+GUI_Athena", "+GUI_GTK", "+GUI_KDE", "+GUI_Motif" or "MS-Windows ... bit
|
||||
GUI version".
|
||||
included. You can check this with the ":version" command, it says "with xxx
|
||||
GUI", where "xxx" is X11-Motif, X11-Athena, Photon, GTK, GTK2, etc., or
|
||||
"MS-Windows 32 bit GUI version".
|
||||
|
||||
How to start the GUI depends on the system used. Mostly you can run the
|
||||
GUI version of Vim with:
|
||||
@@ -37,7 +37,8 @@ The X11 version of Vim can run both in GUI and in non-GUI mode. See
|
||||
|
||||
*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
|
||||
When the GUI starts up initializations are carried out, in this order:
|
||||
- The termcap options are reset to their default value for the GUI.
|
||||
- The 'term' option is set to "builgin_gui" and terminal options are reset to
|
||||
their default value for the GUI |terminal-options|.
|
||||
- If the system menu file exists, it is sourced. The name of this file is
|
||||
normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also
|
||||
see |$VIMRUNTIME|. To skip loading the system menu include 'M' in
|
||||
@@ -954,6 +955,9 @@ This section describes other features which are related to the GUI.
|
||||
endif
|
||||
endif
|
||||
|
||||
A recommended Japanese font is MS Mincho. You can find info here:
|
||||
http://www.lexikan.com/mincho.htm
|
||||
|
||||
==============================================================================
|
||||
7. Shell Commands *gui-shell*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui_x11.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*gui_x11.txt* For Vim version 7.0aa. Last change: 2005 Dec 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -437,59 +437,9 @@ command line argument).
|
||||
==============================================================================
|
||||
7. KDE version *gui-kde* *kde* *KDE* *KVim*
|
||||
|
||||
NOTE: The KDE version is still under development. It is not recommended for
|
||||
daily work.
|
||||
|
||||
The KDE version of Vim works with KDE 2.x and KDE 3.x.
|
||||
KVim (name code for gui-kde) does not use traditional X settings for its
|
||||
configuration.
|
||||
Most important difference is the font handling, KVim uses QFont to display the
|
||||
text. To set your font use the following syntax :
|
||||
>
|
||||
:set guifont=Fixed\ [Misc]/10/-1/5/50/0/0/0/1/0
|
||||
<
|
||||
the '10' value is the font size, other settings concerns more specific Qt
|
||||
options which you should not need to care with.
|
||||
The suggested way to choose your font is through the font selection dialog
|
||||
available with the command :
|
||||
:set guifont=*
|
||||
|
||||
Note: X Font names are not supported any more, so if you use GVim too, you'll
|
||||
have to set something like this in your ~/.gvimrc : >
|
||||
|
||||
if has("gui_kde")
|
||||
:set guifont=Fixed\ [Misc]/10/-1/5/50/0/0/0/1/0
|
||||
else if has("gui_gtk")
|
||||
:set guifont=-misc-fixed-medium-r-normal-*-*-100-*-*-c-*-iso10646-1
|
||||
endif
|
||||
<
|
||||
*antialias*
|
||||
KVim uses antialias for its font, so that the text looks better, to disable
|
||||
this you have to refer to Qt's documentation (export QT_XFT=0 for QT 2.x).
|
||||
|
||||
KDE provides some other features, like being able to move the menubar and the
|
||||
toolbar wherever you want around the text area.
|
||||
|
||||
*kde-toolbar*
|
||||
KVim can be used with a KDE-look toolbar instead of Vim's default toolbar. To
|
||||
enable this feature you have to run the configure script with the
|
||||
--enable-kde-toolbar switch. It may be moved to a runtime option in the
|
||||
future.
|
||||
|
||||
*DCOP*
|
||||
Since Vim 6.0, the new ClientServer feature has been added, it works fine in
|
||||
KVim too. KVim also provides its own communication scheme based on DCOP. This
|
||||
is mainly used by the |vimpart| but can freely be used by other applications
|
||||
or manually through KDE's DCOP tools. The DCOP servername is synchronized with
|
||||
the X11 servername so that it's easier to identify the same KVim through the
|
||||
two communication systems.
|
||||
|
||||
*vimpart* *vim-kpart*
|
||||
KVim developers are also working on a component to allow embedding of Vim into
|
||||
KDE's applications. As of this writing, the component is working and can be
|
||||
used in different KDE applications. New KDE applications should support it
|
||||
soon. To get more information about this component, refer to
|
||||
http://freehackers.org/kvim or to the KDE project.
|
||||
There is no KDE version of Vim. There has been some work on a port using the
|
||||
Qt toolkit, but it never worked properly and it has been abandoned. Work
|
||||
continues on Yzis: www.yzis.org.
|
||||
|
||||
==============================================================================
|
||||
8. Compiling *gui-x11-compiling*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*help.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
*help.txt* For Vim version 7.0aa. Last change: 2006 Feb 27
|
||||
|
||||
VIM - main help file
|
||||
k
|
||||
@@ -17,13 +17,13 @@ Get specific help: It is possible to go directly to whatever you want help
|
||||
It is possible to further specify the context:
|
||||
*help-context*
|
||||
WHAT PREPEND EXAMPLE ~
|
||||
Normal mode commands (nothing) :help x
|
||||
Visual mode commands v_ :help v_u
|
||||
Insert mode commands i_ :help i_<Esc>
|
||||
Command-line commands : :help :quit
|
||||
Normal mode command (nothing) :help x
|
||||
Visual mode command v_ :help v_u
|
||||
Insert mode command i_ :help i_<Esc>
|
||||
Command-line command : :help :quit
|
||||
Command-line editing c_ :help c_<Del>
|
||||
Vim command arguments - :help -r
|
||||
Options ' :help 'textwidth'
|
||||
Vim command argument - :help -r
|
||||
Option ' :help 'textwidth'
|
||||
Search for help: Type ":help word", then hit CTRL-D to see matching
|
||||
help entries for "word".
|
||||
|
||||
@@ -122,6 +122,7 @@ Advanced editing ~
|
||||
|tagsrch.txt| tags and special searches
|
||||
|quickfix.txt| commands for a quick edit-compile-fix cycle
|
||||
|windows.txt| commands for using multiple windows and buffers
|
||||
|tabpage.txt| commands for using multiple tab pages
|
||||
|syntax.txt| syntax highlighting
|
||||
|spell.txt| spell checking
|
||||
|diff.txt| working with two or three versions of the same file
|
||||
@@ -186,9 +187,11 @@ Remarks about specific systems ~
|
||||
|os_win32.txt| MS-Windows 95/98/NT
|
||||
*standard-plugin-list*
|
||||
Standard plugins ~
|
||||
|pi_netrw.txt| Reading and writing files over a network
|
||||
|pi_gzip.txt| Reading and writing compressed files
|
||||
|pi_expl.txt| File explorer
|
||||
|pi_netrw.txt| Reading and writing files over a network
|
||||
|pi_paren.txt| Highlight matching parens
|
||||
|pi_tar.txt| Tar file explorer
|
||||
|pi_zip.txt| Zip archive explorer
|
||||
|
||||
LOCAL ADDITIONS: *local-additions*
|
||||
|
||||
|
||||
@@ -208,6 +208,11 @@ The available subcommands are:
|
||||
|
||||
USAGE :cs show
|
||||
|
||||
*:lcscope* *:lcs*
|
||||
This command is same as the ":cscope" command, except when the
|
||||
'cscopequickfix' option is set, the location list for the current window is
|
||||
used instead of the quickfix list to show the cscope results.
|
||||
|
||||
*:cstag* *E257* *E562*
|
||||
If you use cscope as well as ctags, |:cstag| allows you to search one or
|
||||
the other before making a jump. For example, you can choose to first
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_mzsch.txt* For Vim version 7.0aa. Last change: 2005 May 08
|
||||
*if_mzsch.txt* For Vim version 7.0aa. Last change: 2006 Jan 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Sergey Khorev
|
||||
@@ -10,6 +10,7 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme*
|
||||
2. Examples |mzscheme-examples|
|
||||
3. Threads |mzscheme-threads|
|
||||
4. The Vim access procedures |mzscheme-vim|
|
||||
5. Dynamic loading |mzscheme-dynamic|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
|
||||
@@ -243,5 +244,23 @@ Windows *mzscheme-window*
|
||||
a pair (linenr . column).
|
||||
(set-cursor (line . col) [window]) Set cursor position.
|
||||
|
||||
==============================================================================
|
||||
5. Dynamic loading *mzscheme-dynamic*
|
||||
|
||||
On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
|
||||
output then includes |+mzscheme/dyn|.
|
||||
|
||||
This means that Vim will search for the MzScheme DLL files only when needed.
|
||||
When you don't use the MzScheme interface you don't need them, thus you can
|
||||
use Vim without these DLL files.
|
||||
|
||||
To use the MzScheme interface the MzScheme DLLs must be in your search path.
|
||||
In a console window type "path" to see what directories are used.
|
||||
|
||||
The names of the DLLs must match the MzScheme version Vim was compiled with.
|
||||
For MzScheme version 209 they will be "libmzsch209_000.dll" and
|
||||
"libmzgc209_000.dll". To know for sure edit "gvim.exe" and search for
|
||||
"libmzsch\d\d\d_\d\d\d\.dll\c".
|
||||
|
||||
======================================================================
|
||||
vim:tw=78:ts=8:sts=4:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_perl.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*if_perl.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Sven Verdoolaege
|
||||
@@ -9,6 +9,7 @@ Perl and Vim *perl* *Perl*
|
||||
1. Editing Perl files |perl-editing|
|
||||
2. Compiling VIM with Perl interface |perl-compiling|
|
||||
3. Using the Perl interface |perl-using|
|
||||
4. Dynamic loading |perl-dynamic|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
|
||||
@@ -259,4 +260,22 @@ function: >
|
||||
endif
|
||||
Note that "EOF" must be at the start of the line.
|
||||
|
||||
==============================================================================
|
||||
4. Dynamic loading *perl-dynamic*
|
||||
|
||||
On MS-Windows the Perl library can be loaded dynamically. The |:version|
|
||||
output then includes |+perl/dyn|.
|
||||
|
||||
This means that Vim will search for the Perl DLL file only when needed. When
|
||||
you don't use the Perl interface you don't need it, thus you can use Vim
|
||||
without this DLL file.
|
||||
|
||||
To use the Perl interface the Perl DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
|
||||
The name of the DLL must match the Perl version Vim was compiled with.
|
||||
Currently the name is "perl58.dll". That is for Perl 5.8. To know for
|
||||
sure edit "gvim.exe" and search for "perl\d*.dll\c".
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_pyth.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*if_pyth.txt* For Vim version 7.0aa. Last change: 2006 Jan 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Paul Moore
|
||||
@@ -11,6 +11,7 @@ The Python Interface to Vim *python* *Python*
|
||||
3. Buffer objects |python-buffer|
|
||||
4. Range objects |python-range|
|
||||
5. Window objects |python-window|
|
||||
6. Dynamic loading |python-dynamic|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
|
||||
@@ -130,14 +131,24 @@ vim.command(str) *python-command*
|
||||
|
||||
vim.eval(str) *python-eval*
|
||||
Evaluates the expression str using the vim internal expression
|
||||
evaluator (see |expression|). Returns the expression result as a
|
||||
string.
|
||||
evaluator (see |expression|). Returns the expression result as:
|
||||
- a string if the Vim expression evaluates to a string or number
|
||||
- a list if the Vim expression evaluates to a Vim list
|
||||
- a dictionary if the Vim expression evaluates to a Vim dictionary
|
||||
Dictionaries and lists are recursively expanded.
|
||||
Examples: >
|
||||
:py text_width = vim.eval("&tw")
|
||||
:py str = vim.eval("12+12") # NB result is a string! Use
|
||||
# string.atoi() to convert to
|
||||
# a number.
|
||||
|
||||
:py tagList = vim.eval('taglist("eval_expr")')
|
||||
< The latter will return a python list of python dicts, for instance:
|
||||
[{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name':
|
||||
'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}]
|
||||
|
||||
|
||||
|
||||
Error object of the "vim" module
|
||||
|
||||
vim.error *python-error*
|
||||
@@ -299,5 +310,22 @@ Window attributes are:
|
||||
The height attribute is writable only if the screen is split horizontally.
|
||||
The width attribute is writable only if the screen is split vertically.
|
||||
|
||||
==============================================================================
|
||||
6. Dynamic loading *python-dynamic*
|
||||
|
||||
On MS-Windows the Python library can be loaded dynamically. The |:version|
|
||||
output then includes |+python/dyn|.
|
||||
|
||||
This means that Vim will search for the Python DLL file only when needed.
|
||||
When you don't use the Python interface you don't need it, thus you can use
|
||||
Vim without this DLL file.
|
||||
|
||||
To use the Python interface the Python DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
|
||||
The name of the DLL must match the Python version Vim was compiled with.
|
||||
Currently the name is "python24.dll". That is for Python 2.4. To know for
|
||||
sure edit "gvim.exe" and search for "python\d*.dll\c".
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_ruby.txt* For Vim version 7.0aa. Last change: 2005 Aug 31
|
||||
*if_ruby.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Shugo Maeda
|
||||
@@ -11,6 +11,7 @@ The Ruby Interface to Vim *ruby* *Ruby*
|
||||
3. VIM::Buffer objects |ruby-buffer|
|
||||
4. VIM::Window objects |ruby-window|
|
||||
5. Global variables |ruby-globals|
|
||||
6. Dynamic loading |ruby-dynamic|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
|
||||
@@ -166,12 +167,29 @@ cursor = [{row}, {col}]
|
||||
Sets the cursor position to {row} and {col}.
|
||||
|
||||
==============================================================================
|
||||
4. Global variables *ruby-globals*
|
||||
5. Global variables *ruby-globals*
|
||||
|
||||
There are two global variables.
|
||||
|
||||
$curwin The current window object.
|
||||
$curbuf The current buffer object.
|
||||
|
||||
==============================================================================
|
||||
6. Dynamic loading *ruby-dynamic*
|
||||
|
||||
On MS-Windows the Ruby library can be loaded dynamically. The |:version|
|
||||
output then includes |+ruby/dyn|.
|
||||
|
||||
This means that Vim will search for the Ruby DLL file only when needed. When
|
||||
you don't use the Ruby interface you don't need it, thus you can use Vim
|
||||
without this DLL file.
|
||||
|
||||
To use the Ruby interface the Ruby DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
|
||||
The name of the DLL must match the Ruby version Vim was compiled with.
|
||||
Currently the name is "ruby18.dll". That is for Ruby 1.8. To know for sure
|
||||
edit "gvim.exe" and search for "ruby\d*.dll\c".
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_tcl.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*if_tcl.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Ingo Wilken
|
||||
@@ -14,6 +14,7 @@ The Tcl Interface to Vim *tcl* *Tcl* *TCL*
|
||||
6. Miscellaneous; Output from Tcl |tcl-misc| |tcl-output|
|
||||
7. Known bugs & problems |tcl-bugs|
|
||||
8. Examples |tcl-examples|
|
||||
9. Dynamic loading |tcl-dynamic|
|
||||
|
||||
{Vi does not have any of these commands} *E280* *E281*
|
||||
|
||||
@@ -508,5 +509,22 @@ startup file (usually "~/.vimrc" on Unix):
|
||||
tclfile ~/.vimrc.tcl
|
||||
endif
|
||||
|
||||
==============================================================================
|
||||
9. Dynamic loading *tcl-dynamic*
|
||||
|
||||
On MS-Windows the Tcl library can be loaded dynamically. The |:version|
|
||||
output then includes |+tcl/dyn|.
|
||||
|
||||
This means that Vim will search for the Tcl DLL file only when needed. When
|
||||
you don't use the Tcl interface you don't need it, thus you can use Vim
|
||||
without this DLL file.
|
||||
|
||||
To use the Tcl interface the Tcl DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
|
||||
The name of the DLL must match the Tcl version Vim was compiled with.
|
||||
Currently the name is "tcl83.dll". That is for Tcl 8.3. To know for sure
|
||||
edit "gvim.exe" and search for "tcl\d*.dll\c".
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 7.0aa. Last change: 2005 Aug 11
|
||||
*index.txt* For Vim version 7.0aa. Last change: 2006 Feb 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -150,7 +150,7 @@ commands in CTRL-X submode *i_CTRL-X_index*
|
||||
|i_CTRL-X_CTRL-K| CTRL-X CTRL-K complete identifiers from dictionary
|
||||
|i_CTRL-X_CTRL-L| CTRL-X CTRL-L complete whole lines
|
||||
|i_CTRL-X_CTRL-N| CTRL-X CTRL-N next completion
|
||||
|i_CTRL-X_CTRL-O| CTRL-X CTRL-O occult completion
|
||||
|i_CTRL-X_CTRL-O| CTRL-X CTRL-O omni completion
|
||||
|i_CTRL-X_CTRL-P| CTRL-X CTRL-P previous completion
|
||||
|i_CTRL-X_CTRL-S| CTRL-X CTRL-S spelling suggestions
|
||||
|i_CTRL-X_CTRL-T| CTRL-X CTRL-T complete identifiers from thesaurus
|
||||
@@ -343,9 +343,9 @@ tag char note action in Normal mode ~
|
||||
"yy"
|
||||
|ZZ| ZZ store current file if modified, and exit
|
||||
|ZQ| ZQ exit current file always
|
||||
|[| [{char} square bracket command (see below)
|
||||
|[| [{char} square bracket command (see |[| below)
|
||||
\ not used
|
||||
|]| ]{char} square bracket command (see below)
|
||||
|]| ]{char} square bracket command (see |]| below)
|
||||
|^| ^ 1 cursor to the first CHAR of the line
|
||||
|_| _ 1 cursor to the first CHAR N - 1 lines lower
|
||||
|`| `{a-zA-Z0-9} 1 cursor to the mark {a-zA-Z0-9}
|
||||
@@ -373,7 +373,7 @@ tag char note action in Normal mode ~
|
||||
|e| e 1 cursor forward to the end of word N
|
||||
|f| f{char} 1 cursor to Nth occurrence of {char} to the
|
||||
right
|
||||
|g| g{char} extended commands, see below
|
||||
|g| g{char} extended commands, see |g| below
|
||||
|h| h 1 cursor N chars to the left
|
||||
|i| i 2 insert text before the cursor N times
|
||||
|j| j 1 cursor N lines downward
|
||||
@@ -403,7 +403,7 @@ tag char note action in Normal mode ~
|
||||
cursor [into buffer x]
|
||||
|y| ["x]y{motion} yank Nmove text [into buffer x]
|
||||
|yy| ["x]yy yank N lines [into buffer x]
|
||||
|z| z{char} commands starting with 'z', see below
|
||||
|z| z{char} commands starting with 'z', see |z| below
|
||||
|{| { 1 cursor N paragraphs backward
|
||||
|bar| | 1 cursor to column N
|
||||
|}| } 1 cursor N paragraphs forward
|
||||
@@ -541,6 +541,9 @@ tag command action in Normal mode ~
|
||||
the cursor
|
||||
|CTRL-W_f| CTRL-W f split window and edit file name under the
|
||||
cursor
|
||||
|CTRL-W_F| CTRL-W F split window and edit file name under the
|
||||
cursor and jump to the line number
|
||||
following the file name.
|
||||
|CTRL-W_g_CTRL-]| CTRL-W g CTRL-] split window and do |:tjump| to tag under
|
||||
cursor
|
||||
|CTRL-W_g]| CTRL-W g ] split window and do |:tselect| for tag
|
||||
@@ -719,6 +722,9 @@ tag char note action in Normal mode ~
|
||||
word
|
||||
|gf| gf start editing the file whose name is under
|
||||
the cursor
|
||||
|gF| gF start editing the file whose name is under
|
||||
the cursor and jump to the line number
|
||||
following the filename.
|
||||
|gg| gg 1 cursor to line N, default first line
|
||||
|gh| gh start Select mode
|
||||
|gi| gi 2 like "i", but first move to the |'^| mark
|
||||
@@ -736,6 +742,7 @@ tag char note action in Normal mode ~
|
||||
|gu| gu{motion} 2 make Nmove text lowercase
|
||||
|gv| gv reselect the previous Visual area
|
||||
|gw| gw{motion} 2 format Nmove text and keep cursor
|
||||
|g@| g@{motion} call 'operatorfunc'
|
||||
|g~| g~{motion} 2 swap case for Nmove text
|
||||
|g<Down>| g<Down> 1 same as "gj"
|
||||
|g<End>| g<End> 1 same as "g$"
|
||||
@@ -759,16 +766,19 @@ tag char note action in Normal mode ~
|
||||
cursor on first non-blank
|
||||
|z.| z. redraw, cursor line to center of window,
|
||||
cursor on first non-blank
|
||||
|z=| z= give spelling suggestions
|
||||
|zA| zA open a closed fold or close an open fold
|
||||
recursively
|
||||
|zC| zC close folds recursively
|
||||
|zD| zD delete folds recursively
|
||||
|zE| zE eliminate all folds
|
||||
|zF| zF create a fold for N lines
|
||||
|zG| zG mark word as good spelled word
|
||||
|zM| zM set 'foldlevel' to zero
|
||||
|zN| zN set 'foldenable'
|
||||
|zO| zO open folds recursively
|
||||
|zR| zR set 'foldlevel' to the deepest fold
|
||||
|zW| zW mark word as wrong (bad) spelled word
|
||||
|zX| zX re-apply 'foldlevel'
|
||||
|z^| z^ cursor on line N (default line above
|
||||
window), otherwise like "z-"
|
||||
@@ -780,6 +790,7 @@ tag char note action in Normal mode ~
|
||||
position the cursor at the end (right side)
|
||||
of the screen
|
||||
|zf| zf{motion} create a fold for Nmove text
|
||||
|zg| zg mark word as good spelled word
|
||||
|zh| zh when 'wrap' off scroll screen N characters
|
||||
to the right
|
||||
|zi| zi toggle 'foldenable'
|
||||
@@ -796,6 +807,7 @@ tag char note action in Normal mode ~
|
||||
side) of the screen
|
||||
|zt| zt redraw, cursor line at top of window
|
||||
|zv| zv open enough folds to view the cursor line
|
||||
|zw| zw mark word as wrong (bad) spelled word
|
||||
|zx| zx re-apply 'foldlevel' and do "zv"
|
||||
|zz| zz redraw, cursor line at center of window
|
||||
|z<Left>| z<Left> same as "zh"
|
||||
@@ -1063,7 +1075,9 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:cNfile| :cNf[ile] go to last error in previous file
|
||||
|:cabbrev| :ca[bbrev] like ":abbreviate" but for Command-line mode
|
||||
|:cabclear| :cabc[lear] clear all abbreviations for Command-line mode
|
||||
|:caddfile| :cad[dfile] add error message to current quickfix list
|
||||
|:caddbuffer| :caddb[uffer] add errors from buffer
|
||||
|:caddexpr| :cad[dexpr] add errors from expr
|
||||
|:caddfile| :caddf[ile] add error message to current quickfix list
|
||||
|:call| :cal[l] call a function
|
||||
|:catch| :cat[ch] part of a :try command
|
||||
|:cbuffer| :cb[uffer] parse error messages and jump to first error
|
||||
@@ -1206,23 +1220,56 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:keepalt| :keepa[lt] following command keeps the alternate file
|
||||
|:keepmarks| :kee[pmarks] following command keeps marks where they are
|
||||
|:keepjumps| :keepj[jumps] following command keeps jumplist and marks
|
||||
|:lNext| :lN[ext] go to previous entry in location list
|
||||
|:lNfile| :lNf[ile] go to last entry in previous file
|
||||
|:list| :l[ist] print lines
|
||||
|:laddexpr| :lad[dexpr] add locations from expr
|
||||
|:laddbuffer| :laddb[uffer] add locations from buffer
|
||||
|:laddfile| :laddf[ile] add locations to current location list
|
||||
|:last| :la[st] go to the last file in the argument list
|
||||
|:language| :lan[guage] set the language (locale)
|
||||
|:lbuffer| :lb[uffer] parse locations and jump to first location
|
||||
|:lcd| :lc[d] change directory locally
|
||||
|:lchdir| :lch[dir] change directory locally
|
||||
|:lclose| :lcl[ose] close location window
|
||||
|:lcscope| :lcs[cope] like ":cscope" but uses location list
|
||||
|:left| :le[ft] left align lines
|
||||
|:leftabove| :lefta[bove] make split window appear left or above
|
||||
|:let| :let assign a value to a variable or option
|
||||
|:lexpr| :lex[pr] read locations from expr and jump to first
|
||||
|:lfile| :lf[ile] read file with locations and jump to first
|
||||
|:lfirst| :lfir[st] go to the specified location, default first one
|
||||
|:lgetfile| :lg[etfile] read file with locations
|
||||
|:lgrep| :lgr[ep] run 'grepprg' and jump to first match
|
||||
|:lgrepadd| :lgrepa[dd] like :grep, but append to current list
|
||||
|:lhelpgrep| :lh[elpgrep] like ":helpgrep" but uses location list
|
||||
|:ll| :ll go to specific location
|
||||
|:llast| :lla[st] go to the specified location, default last one
|
||||
|:llist| :lli[st] list all locations
|
||||
|:lmake| :lmak[e] execute external command 'makeprg' and parse
|
||||
error messages
|
||||
|:lmap| :lm[ap] like ":map!" but includes Lang-Arg mode
|
||||
|:lmapclear| :lmapc[lear] like ":mapclear!" but includes Lang-Arg mode
|
||||
|:lnext| :lne[xt] go to next location
|
||||
|:lnewer| :lnew[er] go to newer location list
|
||||
|:lnfile| :lnf[ile] go to first location in next file
|
||||
|:lnoremap| :ln[oremap] like ":noremap!" but includes Lang-Arg mode
|
||||
|:loadkeymap| :loadk[eymap] load the following keymaps until EOF
|
||||
|:loadview| :lo[adview] load view for current window from a file
|
||||
|:lockmarks| :loc[kmarks] following command keeps marks where they are
|
||||
|:lockvar| :lockv[ar] lock variables
|
||||
|:lolder| :lol[der] go to older location list
|
||||
|:lopen| :lope[n] open location window
|
||||
|:lprevious| :lp[revious] go to previous location
|
||||
|:lpfile| :lpf[ile] go to last location in previous file
|
||||
|:lrewind| :lr[ewind] go to the specified location, default first one
|
||||
|:ls| :ls list all buffers
|
||||
|:ltag| :lt[ag] jump to tag and add matching tags to the
|
||||
location list
|
||||
|:lunmap| :lu[nmap] like ":unmap!" but includes Lang-Arg mode
|
||||
|:lvimgrep| :lv[imgrep] search for pattern in files
|
||||
|:lvimgrepadd| :lvimgrepa[dd] like :vimgrep, but append to current list
|
||||
|:lwindow| :lw[indow] open or close location window
|
||||
|:move| :m[ove] move lines
|
||||
|:mark| :ma[rk] set a mark
|
||||
|:make| :mak[e] execute external command 'makeprg' and parse
|
||||
@@ -1250,6 +1297,7 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:nmenu| :nme[nu] add menu for Normal mode
|
||||
|:nnoremap| :nn[oremap] like ":noremap" but for Normal mode
|
||||
|:nnoremenu| :nnoreme[nu] like ":noremenu" but for Normal mode
|
||||
|:noautocmd| :noa[utocmd] following command don't trigger autocommands
|
||||
|:noremap| :no[remap] enter a mapping that will not be remapped
|
||||
|:nohlsearch| :noh[lsearch] suspend 'hlsearch' highlighting
|
||||
|:noreabbrev| :norea[bbrev] enter an abbreviation that will not be
|
||||
@@ -1263,7 +1311,7 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:omap| :om[ap] like ":map" but for Operator-pending mode
|
||||
|:omapclear| :omapc[lear] remove all mappings for Operator-pending mode
|
||||
|:omenu| :ome[nu] add menu for Operator-pending mode
|
||||
|:only| :on[ly] close all windows except current one
|
||||
|:only| :on[ly] close all windows except the current one
|
||||
|:onoremap| :ono[remap] like ":noremap" but for Operator-pending mode
|
||||
|:onoremenu| :onoreme[nu] like ":noremenu" but for Operator-pending mode
|
||||
|:options| :opt[ions] open the options-window
|
||||
@@ -1347,7 +1395,7 @@ The commands are sorted on the non-optional part of their name.
|
||||
buffer list
|
||||
|:scriptnames| :scrip[tnames] list names of all sourced Vim scripts
|
||||
|:scriptencoding| :scripte[ncoding] encoding used in sourced Vim script
|
||||
|:scscope| :scs[cope] split window and execute cscope command
|
||||
|:scscope| :scs[cope] split window and execute cscope command
|
||||
|:set| :se[t] show or set options
|
||||
|:setfiletype| :setf[iletype] set 'filetype', unless it was set already
|
||||
|:setglobal| :setg[lobal] show global values of options
|
||||
@@ -1371,7 +1419,7 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:source| :so[urce] read Vim or Ex commands from a file
|
||||
|:spelldump| :spelld[ump] split window and fill with all correct words
|
||||
|:spellgood| :spe[llgood] add good word for spelling
|
||||
|:spellrepall| :spellr[epall] replace all bad words like last |z?|
|
||||
|:spellrepall| :spellr[epall] replace all bad words like last |z=|
|
||||
|:spellwrong| :spellw[rong] add spelling mistake
|
||||
|:split| :sp[lit] split current window
|
||||
|:sprevious| :spr[evious] split window and go to previous file in the
|
||||
@@ -1381,6 +1429,7 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:stop| :st[op] suspend the editor or escape to a shell
|
||||
|:stag| :sta[g] split window and jump to a tag
|
||||
|:startinsert| :star[tinsert] start Insert mode
|
||||
|:startgreplace| :startg[replace] start Virtual Replace mode
|
||||
|:startreplace| :startr[eplace] start Replace mode
|
||||
|:stopinsert|| :stopi[nsert] stop Insert mode
|
||||
|:stjump| :stj[ump] do ":tjump" and split window
|
||||
@@ -1393,6 +1442,20 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:syncbind| :sync[bind] sync scroll binding
|
||||
|:t| :t same as ":copy"
|
||||
|:tNext| :tN[ext] jump to previous matching tag
|
||||
|:tabNext| :tabN[ext] go to previous tab page
|
||||
|:tabclose| :tabc[lose] close current tab page
|
||||
|:tabedit| :tabe[dit] edit a file in a new tab page
|
||||
|:tabfind| :tabf[ind] find file in 'path', edit it in a new tab page
|
||||
|:tabfirst| :tabfir[st] got to first tab page
|
||||
|:tablast| :tabl[ast] got to last tab page
|
||||
|:tabmove| :tabm[ove] move tab page to other position
|
||||
|:tabnew| :tabnew edit a file in a new tab page
|
||||
|:tabnext| :tabn[ext] go to next tab page
|
||||
|:tabonly| :tabo[nly] close all tab pages except the current one
|
||||
|:tabprevious| :tabp[revious] go to previous tab page
|
||||
|:tabrewind| :tabr[ewind] got to first tab page
|
||||
|:tabs| :tabs list the tab pages and what they contain
|
||||
|:tab| :tab create new tab when opening new window
|
||||
|:tag| :ta[g] jump to tag
|
||||
|:tags| :tags show the contents of the tag stack
|
||||
|:tcl| :tc[l] execute Tcl command
|
||||
@@ -1413,6 +1476,7 @@ The commands are sorted on the non-optional part of their name.
|
||||
|:tselect| :ts[elect] list matching tags and select one
|
||||
|:tunmenu| :tu[nmenu] remove menu tooltip
|
||||
|:undo| :u[ndo] undo last change(s)
|
||||
|:undojoin| :undoj[oin] join next change with previous undo block
|
||||
|:unabbreviate| :una[bbreviate] remove abbreviation
|
||||
|:unhide| :unh[ide] open a window for each loaded file in the
|
||||
buffer list
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*insert.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
*insert.txt* For Vim version 7.0aa. Last change: 2006 Mar 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -126,8 +126,10 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
|
||||
'=' the expression register: you are prompted to
|
||||
enter an expression (see |expression|)
|
||||
Note that 0x80 (128 decimal) is used for
|
||||
special keys, use CTRL-R CTRL-R to insert it
|
||||
literally.
|
||||
special keys. E.g., you can use this to move
|
||||
the cursor up:
|
||||
CTRL-R ="\<Up>"
|
||||
Use CTRL-R CTRL-R to insert text literally.
|
||||
See |registers| about registers. {not in Vi}
|
||||
|
||||
CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
|
||||
@@ -354,7 +356,7 @@ CTRL-G CTRL-J cursor one line down, insert start column *i_CTRL-G_CTRL-J*
|
||||
<MouseUp> scroll three lines up *i_<MouseUp>*
|
||||
<S-MouseUp> scroll a full page up *i_<S-MouseUp>*
|
||||
CTRL-O execute one command, return to Insert mode *i_CTRL-O*
|
||||
CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O*
|
||||
CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O*
|
||||
CTRL-L when 'insertmode' is set: go to Normal mode *i_CTRL-L*
|
||||
CTRL-G u break undo sequence, start new change *i_CTRL-G_u*
|
||||
-----------------------------------------------------------------------
|
||||
@@ -422,7 +424,7 @@ When 'textwidth' and 'wrapmargin' are both set, 'textwidth' is used.
|
||||
If you don't really want to break the line, but view the line wrapped at a
|
||||
convenient place, see the 'linebreak' option.
|
||||
|
||||
The line is only broken automatically when using insert mode, or when
|
||||
The line is only broken automatically when using Insert mode, or when
|
||||
appending to a line. When in replace mode and the line length is not
|
||||
changed, the line will not be broken.
|
||||
|
||||
@@ -438,6 +440,10 @@ characters to the 'formatoptions' option:
|
||||
current insert command. Only differs from "l" when entering non-white
|
||||
characters while crossing the 'textwidth' boundary.
|
||||
|
||||
Normally an internal function will be used to decide where to break the line.
|
||||
If you want to do it in a different way set the 'formatexpr' option to an
|
||||
expression that will take care of the line break.
|
||||
|
||||
If you want to format a block of text, you can use the "gq" operator. Type
|
||||
"gq" and a movement command to move the cursor to the end of the block. In
|
||||
many cases, the command "gq}" will do what you want (format until the end of
|
||||
@@ -569,7 +575,7 @@ Completion can be done for:
|
||||
8. definitions or macros |i_CTRL-X_CTRL-D|
|
||||
9. Vim command-line |i_CTRL-X_CTRL-V|
|
||||
10. User defined completion |i_CTRL-X_CTRL-U|
|
||||
11. Occult completion |i_CTRL-X_CTRL-O|
|
||||
11. omni completion |i_CTRL-X_CTRL-O|
|
||||
12. Spelling suggestions |i_CTRL-X_s|
|
||||
13. keywords in 'complete' |i_CTRL-N|
|
||||
|
||||
@@ -622,8 +628,8 @@ CTRL-X CTRL-L Search backwards for a line that starts with the
|
||||
the cursor. Indent is ignored. The matching line is
|
||||
inserted in front of the cursor.
|
||||
The 'complete' option is used to decide which buffers
|
||||
are searched for a match. Only loaded buffers are
|
||||
used.
|
||||
are searched for a match. Both loaded and unloaded
|
||||
buffers are used.
|
||||
CTRL-L or
|
||||
CTRL-P Search backwards for next matching line. This line
|
||||
replaces the previous matching line.
|
||||
@@ -674,6 +680,9 @@ at least two characters is matched.
|
||||
just type:
|
||||
printf("(%g, %g, %g)", vector[0], ^P[1], ^P[2]);
|
||||
|
||||
The search wraps around the end of the file, the value of 'wrapscan' is not
|
||||
used here.
|
||||
|
||||
Multiple repeats of the same completion are skipped; thus a different match
|
||||
will be inserted at each CTRL-N and CTRL-P (unless there is only one
|
||||
matching keyword).
|
||||
@@ -868,8 +877,8 @@ CTRL-X CTRL-V Guess what kind of item is in front of the cursor and
|
||||
User defined completion *compl-function*
|
||||
|
||||
Completion is done by a function that can be defined by the user with the
|
||||
'completefunc' option. See the 'completefunc' help for how the function
|
||||
is called and an example.
|
||||
'completefunc' option. See below for how the function is called and an
|
||||
example |complete-functions|.
|
||||
|
||||
*i_CTRL-X_CTRL-U*
|
||||
CTRL-X CTRL-U Guess what kind of item is in front of the cursor and
|
||||
@@ -882,12 +891,13 @@ CTRL-X CTRL-U Guess what kind of item is in front of the cursor and
|
||||
previous one.
|
||||
|
||||
|
||||
Occult completion *compl-occult*
|
||||
Omni completion *compl-omni*
|
||||
|
||||
Completion is done by a function that can be defined by the user with the
|
||||
'occultfunc' option. This is to be used for filetype-specific completion.
|
||||
'omnifunc' option. This is to be used for filetype-specific completion.
|
||||
|
||||
See the 'completefunc' help for how the function is called and an example.
|
||||
See below for how the function is called and an example |complete-functions|.
|
||||
For remarks about specific filetypes see |compl-omni-filetypes|.
|
||||
|
||||
*i_CTRL-X_CTRL-O*
|
||||
CTRL-X CTRL-O Guess what kind of item is in front of the cursor and
|
||||
@@ -947,6 +957,464 @@ CTRL-P Find previous match for words that start with the
|
||||
copy the words following the previous expansion in
|
||||
other contexts unless a double CTRL-X is used.
|
||||
|
||||
|
||||
FUNCTIONS FOR FINDING COMPLETIONS *complete-functions*
|
||||
|
||||
This applies to 'completefunc' and 'omnifunc'.
|
||||
|
||||
The function is called in two different ways:
|
||||
- First the function is called to find the start of the text to be completed.
|
||||
- Later the function is called to actually find the matches.
|
||||
|
||||
On the first invocation the arguments are:
|
||||
a:findstart 1
|
||||
a:base empty
|
||||
|
||||
The function must return the column where the completion starts. It must be a
|
||||
number between zero and the cursor column "col('.')". This involves looking
|
||||
at the characters just before the cursor and including those characters that
|
||||
could be part of the completed item. The text between this column and the
|
||||
cursor column will be replaced with the matches. Return -1 if no completion
|
||||
can be done.
|
||||
|
||||
On the second invocation the arguments are:
|
||||
a:findstart 0
|
||||
a:base the text with which matches should match; the text that was
|
||||
located in the first call (can be empty)
|
||||
|
||||
The function must return a List with the matching words. These matches
|
||||
usually include the "a:base" text. When there are no matches return an empty
|
||||
List.
|
||||
|
||||
Each list item can either be a string or a Dictionary. When it is a string it
|
||||
is used as the completion. When it is a Dictionary it can contain these
|
||||
items:
|
||||
word the completion, mandatory
|
||||
menu extra text for the popup menu
|
||||
info more information about the item
|
||||
kind single letter indicating the type of completion
|
||||
icase when not zero case is to be ignored; when omitted
|
||||
the 'ignorecase' option is used
|
||||
|
||||
All of these except 'icase' must be a string. If an item does not meet these
|
||||
requirements then an error message is given and further items in the list are
|
||||
not used. You can mix string and Dictionary items in the returned list.
|
||||
|
||||
The "menu" item is used in the popup menu and may be truncated, thus it should
|
||||
be relatively short. The "info" item can be longer, it may be displayed in a
|
||||
balloon.
|
||||
|
||||
The "kind" item uses a single letter to indicate the kind of completion. This
|
||||
may be used to show the completion differently (different color or icon).
|
||||
Currently these types can be used:
|
||||
v variable
|
||||
f function or method
|
||||
c composite (struct, object)
|
||||
|
||||
When searching for matches takes some time call |complete_add()| to add each
|
||||
match to the total list. These matches should then not appear in the returned
|
||||
list! Call |complete_check()| now and then to allow the user to press a key
|
||||
while still searching for matches. Stop searching when it returns non-zero.
|
||||
|
||||
The function is allowed to move the cursor, it is restored afterwards. This
|
||||
option cannot be set from a |modeline| or in the |sandbox|, for security
|
||||
reasons.
|
||||
|
||||
An example that completes the names of the months: >
|
||||
fun! CompleteMonths(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
while start > 0 && line[start - 1] =~ '\a'
|
||||
let start -= 1
|
||||
endwhile
|
||||
return start
|
||||
else
|
||||
" find months matching with "a:base"
|
||||
let res = []
|
||||
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
|
||||
if m =~ '^' . a:base
|
||||
call add(res, m)
|
||||
endif
|
||||
endfor
|
||||
return res
|
||||
endif
|
||||
endfun
|
||||
set completefunc=CompleteMonths
|
||||
<
|
||||
The same, but now pretending searching for matches is slow: >
|
||||
fun! CompleteMonths(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
while start > 0 && line[start - 1] =~ '\a'
|
||||
let start -= 1
|
||||
endwhile
|
||||
return start
|
||||
else
|
||||
" find months matching with "a:base"
|
||||
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
|
||||
if m =~ '^' . a:base
|
||||
call complete_add(m)
|
||||
endif
|
||||
sleep 300m " simulate searching for next match
|
||||
if complete_check()
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
return []
|
||||
endif
|
||||
endfun
|
||||
set completefunc=CompleteMonths
|
||||
<
|
||||
|
||||
INSERT COMPLETION POPUP MENU *ins-completion-menu*
|
||||
*popupmenu-completion*
|
||||
Vim can display the matches in a simplistic popup menu.
|
||||
|
||||
The menu is used when:
|
||||
- The 'completeopt' option contains "menu".
|
||||
- The terminal supports at least 8 colors.
|
||||
- There are at least two matches.
|
||||
|
||||
There are two states:
|
||||
1. A complete match has been inserted.
|
||||
2. Only part of a match has been inserted.
|
||||
|
||||
You normally start in the first state, with the first match being inserted.
|
||||
When "longest" is in 'completeopt' and there is more than one match you start
|
||||
in the second state.
|
||||
|
||||
If you select another match, e.g., with CTRL-N or CTRL-P, you go from the
|
||||
second to the first state. This doesn't change the list of matches.
|
||||
|
||||
|
||||
In the first state these keys have a special meaning:
|
||||
<BS> and CTRL-H Delete one character, find the matches for the word before
|
||||
the cursor. This reduces the list of matches, often to one
|
||||
entry, and switches to the second state.
|
||||
|
||||
In the second state these keys have a special meaning:
|
||||
<BS> and CTRL-H Delete one character, find the matches for the shorter word
|
||||
before the cursor. This may find more matches.
|
||||
CTRL-L Add one character from the current match, may reduce the
|
||||
number of matches.
|
||||
any printable, non-white character:
|
||||
Add this character and reduce the number of matches.
|
||||
|
||||
In both states these can be used:
|
||||
<CR> and <Enter> Accept the currently selected match and stop completion.
|
||||
<PageUp> Select a match several entries back, but don't insert it.
|
||||
<PageDown> Select a match several entries further, but don't insert it.
|
||||
<Up> Select the previous match, as if CTRL-P was used, but don't
|
||||
insert it.
|
||||
<Down> Select the next match, as if CTRL-N was used, but don't
|
||||
insert it.
|
||||
Any other character:
|
||||
Stop completion without changing the match and insert the
|
||||
typed character. Note that typing a space or <Tab> will
|
||||
work in both states.
|
||||
|
||||
|
||||
The colors of the menu can be changed with these highlight groups:
|
||||
Pmenu normal item |hl-Pmenu|
|
||||
PmenuSel selected item |hl-PmenuSel|
|
||||
PmenuSbar scrollbar |hl-PmenuSbar|
|
||||
PmenuThumb thumb of the scrollbar |hl-PmenuThumb|
|
||||
|
||||
There are no special mappings for when the popup menu is visible. However,
|
||||
you can use an Insert mode mapping that checks the |pumvisible()| function to
|
||||
do something different. Example: >
|
||||
:inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>
|
||||
|
||||
|
||||
FILETYPE-SPECIFIC REMARKS FOR OMNI COMPLETION *compl-omni-filetypes*
|
||||
|
||||
The file used for {filetype} should be autoload/{filetype}complete.vim
|
||||
in 'runtimepath'. Thus for "java" it is autoload/javacomplete.vim.
|
||||
|
||||
|
||||
C *ft-c-omni*
|
||||
|
||||
Completion of C code requires a tags file. You should use Exuberant ctags,
|
||||
because it adds extra information that is needed for completion. You can find
|
||||
it here: http://ctags.sourceforge.net/
|
||||
For version 5.5.4 you should add a patch that adds the "typename:" field:
|
||||
ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch
|
||||
A compiled .exe for MS-Windows can be found at:
|
||||
http://georgevreilly.com/vim/ctags.html
|
||||
|
||||
If you want to complete system functions you can do something like this. Use
|
||||
ctags to generate a tags file for all the system header files: >
|
||||
% ctags -R -f ~/.vim/systags /usr/include /usr/local/include
|
||||
In your vimrc file add this tags file to the 'tags' option: >
|
||||
set tags+=~/.vim/systags
|
||||
|
||||
When using CTRL-X CTRL-O after a name without any "." or "->" it is completed
|
||||
from the tags file directly. This works for any identifier, also function
|
||||
names. If you want to complete a local variable name, which does not appear
|
||||
in the tags file, use CTRL-P instead.
|
||||
|
||||
When using CTRL-X CTRL-O after something that has "." or "->" Vim will attempt
|
||||
to recognize the type of the variable and figure out what members it has.
|
||||
This means only members valid for the variable will be listed.
|
||||
|
||||
When a member name already was complete, CTRL-X CTRL-O will add a "." or
|
||||
"->" for composite types.
|
||||
|
||||
Vim doesn't include a C compiler, only the most obviously formatted
|
||||
declarations are recognized. Preprocessor stuff may cause confusion.
|
||||
When the same structure name appears in multiple places all possible members
|
||||
are included.
|
||||
|
||||
|
||||
CSS *ft-css-omni*
|
||||
|
||||
Complete properties and their appropriate values according to CSS 2.1
|
||||
specification.
|
||||
|
||||
|
||||
HTML and XHTML *ft-html-omni*
|
||||
*ft-xhtml-omni*
|
||||
|
||||
CTRL-X CTRL-O provides completion of various elements of (X)HTML files. It is
|
||||
designed to support writing of XHTML 1.0 Strict files but will also works for
|
||||
other versions of HTML. Features:
|
||||
|
||||
- after "<" complete tag name depending on context (no div suggestion inside
|
||||
of an a tag); '/>' indicates empty tags
|
||||
- inside of tag complete proper attributes (no width attribute for an a tag);
|
||||
show also type of attribute; '*' indicates required attributes
|
||||
- when attribute has limited number of possible values help to complete them
|
||||
- complete names of entities
|
||||
- complete values of "class" and "id" attributes with data obtained from
|
||||
<style> tag and included CSS files
|
||||
- when completing value of "style" attribute or working inside of "style" tag
|
||||
switch to |ft-css-omni| completion
|
||||
- when completing values of events attributes or working inside of "script"
|
||||
tag switch to |ft-javascript-omni| completion
|
||||
- when used after "</" CTRL-X CTRL-O will close the last opened tag
|
||||
|
||||
Note: When used first time completion menu will be shown with little delay
|
||||
- this is time needed for loading of data file.
|
||||
Note: Completion may fail in badly formatted documents. In such case try to
|
||||
run |:make| command to detect formatting problems.
|
||||
|
||||
|
||||
JAVASCRIPT *ft-javascript-omni*
|
||||
|
||||
Completion of most elements of JavaScript language and DOM elements.
|
||||
|
||||
Complete:
|
||||
|
||||
- variables
|
||||
- function name; show function arguments
|
||||
- function arguments
|
||||
- properties of variables trying to detect type of variable
|
||||
- complete DOM objects and properties depending on context
|
||||
- keywords of language
|
||||
|
||||
Completion works in separate JavaScript files (&ft==javascript), inside of
|
||||
<script> tag of (X)HTML and in values of event attributes (including scanning
|
||||
of external files.
|
||||
|
||||
DOM compatibility
|
||||
|
||||
At the moment (beginning of 2006) there are two main browsers - MS Internet
|
||||
Explorer and Mozilla Firefox. These two applications are covering over 90% of
|
||||
market. Theoretically standards are created by W3C organisation
|
||||
(http://www.w3c.org) but they are not always followed/implemented.
|
||||
|
||||
IE FF W3C Omni completion ~
|
||||
+/- +/- + + ~
|
||||
+ + - + ~
|
||||
+ - - - ~
|
||||
- + - - ~
|
||||
|
||||
Regardless from state of implementation in browsers but if element is defined
|
||||
in standards, completion plugin will place element in suggestion list. When
|
||||
both major engines implemented element, even if this is not in standards it
|
||||
will be suggested. All other elements are not placed in suggestion list.
|
||||
|
||||
|
||||
SYNTAX *ft-syntax-omni*
|
||||
|
||||
This uses the current syntax highlighting for completion. It can be used for
|
||||
any filetype and provides a minimal language-sensitive completion.
|
||||
|
||||
To enable syntax code completion you can run: >
|
||||
setlocal omnifunc=syntaxcomplete#Complete
|
||||
|
||||
You can automate this by placing the following in your vimrc (after any
|
||||
":filetype" command): >
|
||||
if has("autocmd") && exists("+omnifunc")
|
||||
autocmd Filetype *
|
||||
\ if &omnifunc == "" |
|
||||
\ setlocal omnifunc=syntaxcomplete#Complete |
|
||||
\ endif
|
||||
endif
|
||||
|
||||
The above will set completion to this script only if a specific plugin does
|
||||
not already exist for that filetype.
|
||||
|
||||
Each filetype can have a wide range of syntax items. The plugin allows you to
|
||||
customize which syntax groups to include or exclude from the list. Let's have
|
||||
a look at the PHP filetype to see how this works.
|
||||
|
||||
If you edit a file called, index.php, run the following command: >
|
||||
:syntax list
|
||||
|
||||
First thing you will notice is there are many different syntax groups. The
|
||||
PHP language can include elements from different languages like HTML,
|
||||
JavaScript and many more. The syntax plugin will only include syntax groups
|
||||
that begin with the filetype, "php", in this case. For example these syntax
|
||||
groups are included by default with the PHP: phpEnvVar, phpIntVar,
|
||||
phpFunctions.
|
||||
|
||||
The PHP language has an enormous number of items which it knows how to syntax
|
||||
highlight. This means these items will be available within the omni
|
||||
completion list. Some people may find this list unwieldy or are only
|
||||
interested in certain items.
|
||||
|
||||
There are two ways to prune this list (if necessary). If you find certain
|
||||
syntax groups you do not wish displayed you can add the following to your
|
||||
vimrc: >
|
||||
let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant'
|
||||
|
||||
Add as many syntax groups to this list by comma separating them. The basic
|
||||
form of this variable is: >
|
||||
let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list'
|
||||
|
||||
For completeness the opposite is also true. Creating this variable in your
|
||||
vimrc will only include the items in the phpFunctions and phpMethods syntax
|
||||
groups: >
|
||||
let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods'
|
||||
|
||||
You can create as many of these variables as you need, varying only the
|
||||
filetype at the end of the variable name.
|
||||
|
||||
|
||||
XML *ft-xml-omni*
|
||||
|
||||
Vim 7 provides mechanism to context aware completion of XML files. It depends
|
||||
on special |xml-omni-datafile| and two commands: |:XMLns| and |:XMLent|.
|
||||
Features are:
|
||||
|
||||
- after "<" complete tag name depending on context (no div suggest
|
||||
inside of an a tag)
|
||||
- inside of tag complete proper attributes (no width attribute for an
|
||||
a tag)
|
||||
- when attribute has limited number of possible values help to complete
|
||||
them
|
||||
- complete names of entities (defined in |xml-omni-datafile| and in current file
|
||||
with "<!ENTITY" declarations
|
||||
- when used after "</" CTRL-X CTRL-O will close the last opened tag
|
||||
|
||||
Format of XML data file *xml-omni-datafile*
|
||||
|
||||
Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim)
|
||||
|
||||
XML data files are stored in "autoload/xml" directory in 'runtimepath'. They
|
||||
have meaningful name which will be used in commands. It should be unique name
|
||||
which will not create conflicts in future. For example name xhtml10s.vim means
|
||||
it is data file for XHTML 1.0 Strict.
|
||||
|
||||
File contains one variable with fixed name: g:xmldata_xhtml10s . It is
|
||||
compound from two parts:
|
||||
|
||||
1. "g:xmldata_" general prefix
|
||||
2. "xhtml10s" name of file and name of described XML dialect
|
||||
|
||||
Part two must be exactly the same as name of file.
|
||||
|
||||
Variable is data structure in form of |Dictionary|. Keys are tag names and
|
||||
values are two element |List|. First element of List is also List with names
|
||||
of possible children, second element is |Dictionary| with names of attributes
|
||||
as keys and possible values of attributes as values. Example: >
|
||||
|
||||
let g:xmldata_crippledhtml = {
|
||||
\ "html":
|
||||
\ [ ["body", "head"], {"id": [], "xmlns": ["http://www.w3.org/1999/xhtml"],
|
||||
\ "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}],
|
||||
\ "script":
|
||||
\ [ [], {"id": [], "charset": [], "type": ["text/javascript"], "src": [],
|
||||
\ "defer": ["BOOL"], "xml:space": ["preserve"]}],
|
||||
\ "meta":
|
||||
\ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme":
|
||||
\ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
|
||||
\ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
|
||||
\ "vimxmltaginfo": {
|
||||
\ 'meta': ['/>', '']},
|
||||
\ "vimxmlattrinfo": {
|
||||
\ 'http-equiv': ['ContentType', '']}
|
||||
|
||||
This example should be put in "autoload/xml/crippledhtml.vim" file.
|
||||
|
||||
In example are visible four special elements:
|
||||
|
||||
1. "vimxmlentities" - special key with List containing entities of this XML
|
||||
dialect.
|
||||
2. "BOOL" - value of attribute key showing if attribute should be inserted
|
||||
bare ("defer" vs. 'defer="'). It can be the only element of List of
|
||||
attribute values.
|
||||
3. "vimxmltaginfo" - special key with dictionary containing as key tag names,
|
||||
as value two element List for additional menu info and long description.
|
||||
4. "vimxmlattrinfo" - special key with dictionary containing as key attribute
|
||||
names, as value two element List for additional menu info and long
|
||||
description.
|
||||
|
||||
Note: Tag names in data file MUST not contain namespace description. Check
|
||||
xsl.vim for example.
|
||||
|
||||
|
||||
Commands
|
||||
|
||||
:XMLns {name} [{namespace}] *:XMLns*
|
||||
|
||||
Vim has to know which data file should be used and with which namespace. For
|
||||
loading of data file and connecting data with prope namespace use |:XMLns|
|
||||
command. First (obligatory) argument is name of data (xhtml10s, xsl). Second
|
||||
argument is code of namespace (h, xsl). When used without second argument
|
||||
dialect will be used as default - without namespace declaration. For example
|
||||
to use XML completion in .xsl files: >
|
||||
|
||||
:XMLns xhtml10s
|
||||
:XMLns xsl xsl
|
||||
|
||||
|
||||
:XMLent {name} *:XMLent*
|
||||
|
||||
By default entities will be completed from data file of default
|
||||
namespace. XMLent command should be used in case when there is no
|
||||
default namespace: >
|
||||
|
||||
:XMLent xhtml10s
|
||||
|
||||
Usage
|
||||
|
||||
While used in situation (after declarations from previous part, | is
|
||||
cursor position): >
|
||||
|
||||
<|
|
||||
|
||||
Will complete to appropriate XHTML tag, and in this situation: >
|
||||
|
||||
<xsl:|
|
||||
|
||||
Will complete to appropriate XSL tag.
|
||||
|
||||
File xmlcomplete.vim provides through |autoload| mechanism
|
||||
GetLastOpenTag function which can be used in XML files to get name of
|
||||
last open tag with (b:unaryTagsStack has to be defined): >
|
||||
|
||||
:echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
==============================================================================
|
||||
8. Insert mode commands *inserting*
|
||||
|
||||
@@ -1073,6 +1541,13 @@ NOTE: ":append" and ":insert" don't work properly in between ":if" and
|
||||
the function or script is finished.
|
||||
{not in Vi}
|
||||
{not available when compiled without the +ex_extra
|
||||
feature}
|
||||
|
||||
*:startgreplace*
|
||||
:startg[replace][!] Just like |:startreplace|, but use Virtual Replace
|
||||
mode, like with |gR|.
|
||||
{not in Vi}
|
||||
{not available when compiled without the +ex_extra
|
||||
feature}
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -581,7 +581,7 @@ function find_tag2() {
|
||||
ntags=split(atag,blata,"[ ]");
|
||||
if ( ntags > 1 ) { return; }
|
||||
if ( ( allow_one_char == "no" ) && \
|
||||
( index("!#$%\&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",atag) !=0 ) ) {
|
||||
( index("!#$%&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",atag) !=0 ) ) {
|
||||
return;
|
||||
}
|
||||
if ( skip_word[atag] == "yes" ) { return; }
|
||||
@@ -610,7 +610,7 @@ function find_tag3() {
|
||||
ntags=split(btag,blata,"[ ]");
|
||||
if ( ntags > 1 ) { return; }
|
||||
if ( ( allow_one_char == "no" ) && \
|
||||
( index("!#$%\&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",btag) !=0 ) ) {
|
||||
( index("!#$%&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",btag) !=0 ) ) {
|
||||
return;
|
||||
}
|
||||
if ( skip_word[btag] == "yes" ) { return; }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 7.0aa. Last change: 2005 Aug 16
|
||||
*map.txt* For Vim version 7.0aa. Last change: 2006 Feb 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -10,6 +10,17 @@ This subject is introduced in sections |05.3|, |24.7| and |40.1| of the user
|
||||
manual.
|
||||
|
||||
1. Key mapping |key-mapping|
|
||||
1.1 MAP COMMANDS |:map-commands|
|
||||
1.2 Special arguments |:map-arguments|
|
||||
1.3 Mapping and modes |:map-modes|
|
||||
1.4 Listing mappings |map-listing|
|
||||
1.5 Mapping special keys |:map-special-keys|
|
||||
1.6 Special characters |:map-special-chars|
|
||||
1.7 What keys to map |map-which-keys|
|
||||
1.8 Examples |map-examples|
|
||||
1.9 Using mappings |map-typing|
|
||||
1.10 Mapping alt-keys |:map-alt-keys|
|
||||
1.11 Mapping an operator |:map-operator|
|
||||
2. Abbreviations |abbreviations|
|
||||
3. Local mappings and functions |script-local|
|
||||
4. User-defined commands |user-commands|
|
||||
@@ -24,6 +35,9 @@ is to define a sequence commands for a function key. Example: >
|
||||
|
||||
This appends the current date and time after the cursor (in <> notation |<>|).
|
||||
|
||||
|
||||
1.1 MAP COMMANDS *:map-commands*
|
||||
|
||||
There are commands to enter new mappings, remove mappings and list mappings.
|
||||
See |map-overview| for the various forms of "map" and their relationships with
|
||||
modes.
|
||||
@@ -31,42 +45,42 @@ modes.
|
||||
{lhs} means left-hand-side *{lhs}*
|
||||
{rhs} means right-hand-side *{rhs}*
|
||||
|
||||
:map {lhs} {rhs} *:map*
|
||||
:nm[ap] {lhs} {rhs} *:nm* *:nmap*
|
||||
:vm[ap] {lhs} {rhs} *:vm* *:vmap*
|
||||
:om[ap] {lhs} {rhs} *:om* *:omap*
|
||||
:map! {lhs} {rhs} *:map!*
|
||||
:im[ap] {lhs} {rhs} *:im* *:imap*
|
||||
:lm[ap] {lhs} {rhs} *:lm* *:lmap*
|
||||
:cm[ap] {lhs} {rhs} *:cm* *:cmap*
|
||||
:map {lhs} {rhs} |mapmode-nvo| *:map*
|
||||
:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap*
|
||||
:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap*
|
||||
:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap*
|
||||
:map! {lhs} {rhs} |mapmode-ic| *:map!*
|
||||
:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap*
|
||||
:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap*
|
||||
:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap*
|
||||
Map the key sequence {lhs} to {rhs} for the modes
|
||||
where the map command applies. The result, including
|
||||
{rhs}, is then further scanned for mappings. This
|
||||
allows for nested and recursive use of mappings.
|
||||
|
||||
|
||||
:no[remap] {lhs} {rhs} *:no* *:noremap*
|
||||
:nn[oremap] {lhs} {rhs} *:nn* *:nnoremap*
|
||||
:vn[oremap] {lhs} {rhs} *:vn* *:vnoremap*
|
||||
:ono[remap] {lhs} {rhs} *:ono* *:onoremap*
|
||||
:no[remap]! {lhs} {rhs} *:no!* *:noremap!*
|
||||
:ino[remap] {lhs} {rhs} *:ino* *:inoremap*
|
||||
:ln[oremap] {lhs} {rhs} *:ln* *:lnoremap*
|
||||
:cno[remap] {lhs} {rhs} *:cno* *:cnoremap*
|
||||
:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap*
|
||||
:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap*
|
||||
:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap*
|
||||
:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap*
|
||||
:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!*
|
||||
:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap*
|
||||
:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap*
|
||||
:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap*
|
||||
Map the key sequence {lhs} to {rhs} for the modes
|
||||
where the map command applies. Disallow mapping of
|
||||
{rhs}, to avoid nested and recursive mappings. Often
|
||||
used to redefine a command. {not in Vi}
|
||||
|
||||
|
||||
:unm[ap] {lhs} *:unm* *:unmap*
|
||||
:nun[map] {lhs} *:nun* *:nunmap*
|
||||
:vu[nmap] {lhs} *:vu* *:vunmap*
|
||||
:ou[nmap] {lhs} *:ou* *:ounmap*
|
||||
:unm[ap]! {lhs} *:unm!* *:unmap!*
|
||||
:iu[nmap] {lhs} *:iu* *:iunmap*
|
||||
:lu[nmap] {lhs} *:lu* *:lunmap*
|
||||
:cu[nmap] {lhs} *:cu* *:cunmap*
|
||||
:unm[ap] {lhs} |mapmode-nvo| *:unm* *:unmap*
|
||||
:nun[map] {lhs} |mapmode-n| *:nun* *:nunmap*
|
||||
:vu[nmap] {lhs} |mapmode-v| *:vu* *:vunmap*
|
||||
:ou[nmap] {lhs} |mapmode-o| *:ou* *:ounmap*
|
||||
:unm[ap]! {lhs} |mapmode-ic| *:unm!* *:unmap!*
|
||||
:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap*
|
||||
:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap*
|
||||
:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap*
|
||||
Remove the mapping of {lhs} for the modes where the
|
||||
map command applies. The mapping may remain defined
|
||||
for other modes where it applies.
|
||||
@@ -75,38 +89,38 @@ modes.
|
||||
:map @@ foo
|
||||
:unmap @@ | print
|
||||
|
||||
:mapc[lear] *:mapc* *:mapclear*
|
||||
:nmapc[lear] *:nmapc* *:nmapclear*
|
||||
:vmapc[lear] *:vmapc* *:vmapclear*
|
||||
:omapc[lear] *:omapc* *:omapclear*
|
||||
:mapc[lear]! *:mapc!* *:mapclear!*
|
||||
:imapc[lear] *:imapc* *:imapclear*
|
||||
:lmapc[lear] *:lmapc* *:lmapclear*
|
||||
:cmapc[lear] *:cmapc* *:cmapclear*
|
||||
:mapc[lear] |mapmode-nvo| *:mapc* *:mapclear*
|
||||
:nmapc[lear] |mapmode-n| *:nmapc* *:nmapclear*
|
||||
:vmapc[lear] |mapmode-v| *:vmapc* *:vmapclear*
|
||||
:omapc[lear] |mapmode-o| *:omapc* *:omapclear*
|
||||
:mapc[lear]! |mapmode-ic| *:mapc!* *:mapclear!*
|
||||
:imapc[lear] |mapmode-i| *:imapc* *:imapclear*
|
||||
:lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear*
|
||||
:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear*
|
||||
Remove ALL mappings for the modes where the map
|
||||
command applies. {not in Vi}
|
||||
Warning: This also removes the default mappings.
|
||||
|
||||
:map
|
||||
:nm[ap]
|
||||
:vm[ap]
|
||||
:om[ap]
|
||||
:map!
|
||||
:im[ap]
|
||||
:lm[ap]
|
||||
:cm[ap]
|
||||
:map |mapmode-nvo|
|
||||
:nm[ap] |mapmode-n|
|
||||
:vm[ap] |mapmode-v|
|
||||
:om[ap] |mapmode-o|
|
||||
:map! |mapmode-ic|
|
||||
:im[ap] |mapmode-i|
|
||||
:lm[ap] |mapmode-l|
|
||||
:cm[ap] |mapmode-c|
|
||||
List all key mappings for the modes where the map
|
||||
command applies. Note that ":map" and ":map!" are
|
||||
used most often, because they include the other modes.
|
||||
|
||||
:map {lhs} *:map_l*
|
||||
:nm[ap] {lhs} *:nmap_l*
|
||||
:vm[ap] {lhs} *:vmap_l*
|
||||
:om[ap] {lhs} *:omap_l*
|
||||
:map! {lhs} *:map_l!*
|
||||
:im[ap] {lhs} *:imap_l*
|
||||
:lm[ap] {lhs} *:lmap_l*
|
||||
:cm[ap] {lhs} *:cmap_l*
|
||||
:map {lhs} |mapmode-nvo| *:map_l*
|
||||
:nm[ap] {lhs} |mapmode-n| *:nmap_l*
|
||||
:vm[ap] {lhs} |mapmode-v| *:vmap_l*
|
||||
:om[ap] {lhs} |mapmode-o| *:omap_l*
|
||||
:map! {lhs} |mapmode-ic| *:map_l!*
|
||||
:im[ap] {lhs} |mapmode-i| *:imap_l*
|
||||
:lm[ap] {lhs} |mapmode-l| *:lmap_l*
|
||||
:cm[ap] {lhs} |mapmode-c| *:cmap_l*
|
||||
List the key mappings for the key sequences starting
|
||||
with {lhs} in the modes where the map command applies.
|
||||
{not in Vi}
|
||||
@@ -116,6 +130,21 @@ characters. You can use this to put command sequences under function keys,
|
||||
translate one key into another, etc. See |:mkexrc| for how to save and
|
||||
restore the current mappings.
|
||||
|
||||
*map-ambiguous*
|
||||
When two mappings start with the same sequence of characters, they are
|
||||
ambiguous. Example: >
|
||||
:imap aa foo
|
||||
:imap aaa bar
|
||||
When Vim has read "aa", it will need to get another character to be able to
|
||||
decide if "aa" or "aaa" should be mapped. This means that after typing "aa"
|
||||
that mapping won't get expanded yet, Vim is waiting for another character.
|
||||
If you type a space, then "foo" will get inserted, plus the space. If you
|
||||
type "a", then "bar" will get inserted.
|
||||
{Vi does not allow ambiguous mappings}
|
||||
|
||||
|
||||
1.2 SPECIAL ARGUMENTS *:map-arguments*
|
||||
|
||||
*:map-local* *:map-<buffer>* *E224* *E225*
|
||||
If the first argument to one of these commands is "<buffer>" it will apply to
|
||||
mappings locally to the current buffer only. Example: >
|
||||
@@ -162,12 +191,14 @@ already exists which is equal.
|
||||
Example of what will fail: >
|
||||
:map ,w /[#&!]<CR>
|
||||
:map <buffer> <unique> ,w /[.,;]<CR>
|
||||
If you want to map a key and then have it do what it was originally mapped to,
|
||||
have a look at |maparg()|.
|
||||
|
||||
"<buffer>", "<silent>", "<script>" and "<unique>" can be used in any order.
|
||||
They must appear right after the command, before any other arguments.
|
||||
|
||||
|
||||
MAPPING AND MODES
|
||||
1.3 MAPPING AND MODES *:map-modes*
|
||||
|
||||
There are five sets of mappings
|
||||
- For Normal mode: When typing commands.
|
||||
@@ -187,6 +218,7 @@ to type a count with a zero.
|
||||
*map-overview* *map-modes*
|
||||
Overview of which map command works in which mode:
|
||||
|
||||
*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
|
||||
commands: modes: ~
|
||||
Normal Visual Operator-pending ~
|
||||
:map :noremap :unmap :mapclear yes yes yes
|
||||
@@ -194,6 +226,7 @@ Overview of which map command works in which mode:
|
||||
:vmap :vnoremap :vunmap :vmapclear - yes -
|
||||
:omap :onoremap :ounmap :omapclear - - yes
|
||||
|
||||
*mapmode-ic* *mapmode-i* *mapmode-c* *mapmode-l*
|
||||
Insert Command-line Lang-Arg ~
|
||||
:map! :noremap! :unmap! :mapclear! yes yes -
|
||||
:imap :inoremap :iunmap :imapclear yes - -
|
||||
@@ -236,19 +269,9 @@ character as an argument to command like "f" or "t".
|
||||
are only used for typed characters. This assumes that the language mapping
|
||||
was already done when typing the mapping.
|
||||
|
||||
*map-multibyte*
|
||||
It is possible to map multibyte characters, but only the whole character. You
|
||||
cannot map the first byte only. This was done to prevent problems in this
|
||||
scenario: >
|
||||
:set encoding=latin1
|
||||
:imap <M-C> foo
|
||||
:set encoding=utf-8
|
||||
The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
|
||||
byte. If you type the character <20> (0xea <M-a>) in UTF-8 encoding this is the
|
||||
two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then,
|
||||
otherwise it would be impossible to type the <20> character.
|
||||
|
||||
*map-listing*
|
||||
1.4 LISTING MAPPINGS *map-listing*
|
||||
|
||||
When listing mappings the characters in the first two columns are:
|
||||
|
||||
CHAR MODE ~
|
||||
@@ -283,6 +306,48 @@ last defined. Example: >
|
||||
|
||||
See |:verbose-cmd| for more information.
|
||||
|
||||
|
||||
1.5 MAPPING SPECIAL KEYS *:map-special-keys*
|
||||
|
||||
There are three ways to map a special key:
|
||||
1. The Vi-compatible method: Map the key code. Often this is a sequence that
|
||||
starts with <Esc>. To enter a mapping like this you type ":map " and then
|
||||
you have to type CTRL-V before hitting the function key. Note that when
|
||||
the key code for the key is in the termcap (the t_ options), it will
|
||||
automatically be translated into the internal code and become the second
|
||||
way of mapping (unless the 'k' flag is included in 'cpoptions').
|
||||
2. The second method is to use the internal code for the function key. To
|
||||
enter such a mapping type CTRL-K and then hit the function key, or use
|
||||
the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc.
|
||||
(see table of keys |key-notation|, all keys from <Up> can be used). The
|
||||
first ten function keys can be defined in two ways: Just the number, like
|
||||
"#2", and with "<F>", like "<F2>". Both stand for function key 2. "#0"
|
||||
refers to function key 10, defined with option 't_f10', which may be
|
||||
function key zero on some keyboards. The <> form cannot be used when
|
||||
'cpoptions' includes the '<' flag.
|
||||
3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the
|
||||
termcap entry. Any string entry can be used. For example: >
|
||||
:map <t_F3> G
|
||||
< Maps function key 13 to "G". This does not work if 'cpoptions' includes
|
||||
the '<' flag.
|
||||
|
||||
The advantage of the second and third method is that the mapping will work on
|
||||
different terminals without modification (the function key will be
|
||||
translated into the same internal code or the actual key code, no matter what
|
||||
terminal you are using. The termcap must be correct for this to work, and you
|
||||
must use the same mappings).
|
||||
|
||||
DETAIL: Vim first checks if a sequence from the keyboard is mapped. If it
|
||||
isn't the terminal key codes are tried (see |terminal-options|). If a
|
||||
terminal code is found it is replaced with the internal code. Then the check
|
||||
for a mapping is done again (so you can map an internal code to something
|
||||
else). What is written into the script file depends on what is recognized.
|
||||
If the terminal key code was recognized as a mapping the key code itself is
|
||||
written to the script file. If it was recognized as a terminal code the
|
||||
internal code is written to the script file.
|
||||
|
||||
|
||||
1.6 SPECIAL CHARACTERS *:map-special-chars*
|
||||
*map_backslash*
|
||||
Note that only CTRL-V is mentioned here as a special character for mappings
|
||||
and abbreviations. When 'cpoptions' does not contain 'B', a backslash can
|
||||
@@ -294,23 +359,12 @@ To map a backslash, or use a backslash literally in the {rhs}, the special
|
||||
sequence "<Bslash>" can be used. This avoids the need to double backslashes
|
||||
when using nested mappings.
|
||||
|
||||
*map-ambiguous*
|
||||
When two mappings start with the same sequence of characters, they are
|
||||
ambiguous. Example: >
|
||||
:imap aa foo
|
||||
:imap aaa bar
|
||||
When Vim has read "aa", it will need to get another character to be able to
|
||||
decide if "aa" or "aaa" should be mapped. This means that after typing "aa"
|
||||
that mapping won't get expanded yet, Vim is waiting for another character.
|
||||
If you type a space, then "foo" will get inserted, plus the space. If you
|
||||
type "a", then "bar" will get inserted.
|
||||
{Vi does not allow ambiguous mappings}
|
||||
|
||||
*map_CTRL_C*
|
||||
It's not possible to use a CTRL-C in the {lhs}. You just can't map CTRL-C.
|
||||
The reason is that CTRL-C must always be available to break a running command.
|
||||
Exception: When using the GUI version on MS-Windows CTRL-C can be mapped to
|
||||
allow a Copy command to the clipboard. Use CTRL-Break to interrupt Vim.
|
||||
*map_CTRL-C*
|
||||
Using CTRL-C in the {lhs} is possible, but it will only work when Vim is
|
||||
waiting for a key, not when Vim is busy with something. When Vim is busy
|
||||
CTRL-C interrupts/breaks the command.
|
||||
When using the GUI version on MS-Windows CTRL-C can be mapped to allow a Copy
|
||||
command to the clipboard. Use CTRL-Break to interrupt Vim.
|
||||
|
||||
*map_space_in_lhs*
|
||||
To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for
|
||||
@@ -330,6 +384,18 @@ example, to make sure that function key 8 does nothing at all: >
|
||||
:map <F8> <Nop>
|
||||
:map! <F8> <Nop>
|
||||
<
|
||||
*map-multibyte*
|
||||
It is possible to map multibyte characters, but only the whole character. You
|
||||
cannot map the first byte only. This was done to prevent problems in this
|
||||
scenario: >
|
||||
:set encoding=latin1
|
||||
:imap <M-C> foo
|
||||
:set encoding=utf-8
|
||||
The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
|
||||
byte. If you type the character <20> (0xea <M-a>) in UTF-8 encoding this is the
|
||||
two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then,
|
||||
otherwise it would be impossible to type the <20> character.
|
||||
|
||||
*<Leader>* *mapleader*
|
||||
To define a mapping which uses the "mapleader" variable, the special string
|
||||
"<Leader>" can be used. It is replaced with the string value of "mapleader".
|
||||
@@ -417,14 +483,16 @@ and CTRL-X is not mapped. This was done to be able to use all the named
|
||||
registers and marks, even when the command with the same name has been
|
||||
mapped.
|
||||
|
||||
*map-which-keys*
|
||||
|
||||
1.7 WHAT KEYS TO MAP *map-which-keys*
|
||||
|
||||
If you are going to map something, you will need to choose which key(s) to use
|
||||
for the {lhs}. You will have to avoid keys that are used for Vim commands,
|
||||
otherwise you would not be able to use those commands anymore. Here are a few
|
||||
suggestions:
|
||||
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>,
|
||||
<S-F2>, etc. Note that <F1> is already used for the help command.
|
||||
- Meta-keys (with the ALT key pressed).
|
||||
- Meta-keys (with the ALT key pressed). |:map-alt-keys|
|
||||
- Use the '_' or ',' character and then any other character. The "_" and ","
|
||||
commands do exist in Vim (see |_| and |,|), but you probably never use them.
|
||||
- Use a key that is a synonym for another command. For example: CTRL-P and
|
||||
@@ -435,7 +503,9 @@ losing any builtin function. You can also use ":help {key}^D" to find out if
|
||||
a key is used for some command. ({key} is the specific key you want to find
|
||||
out about, ^D is CTRL-D).
|
||||
|
||||
*map-examples*
|
||||
|
||||
1.8 EXAMPLES *map-examples*
|
||||
|
||||
A few examples (given as you type them, for "<CR>" you type four characters;
|
||||
the '<' flag must not be present in 'cpoptions' for this to work). >
|
||||
|
||||
@@ -444,7 +514,9 @@ the '<' flag must not be present in 'cpoptions' for this to work). >
|
||||
:map _x d/END/e<CR>
|
||||
:map! qq quadrillion questions
|
||||
<
|
||||
*map-typing*
|
||||
|
||||
1.9 USING MAPPINGS *map-typing*
|
||||
|
||||
Vim will compare what you type with the start of a mapped sequence. If there
|
||||
is an incomplete match, it will get more characters until there either is a
|
||||
complete match or until there is no match at all. Example: If you map! "qq",
|
||||
@@ -457,14 +529,15 @@ you type slowly, or your system is slow, reset the 'timeout' option. Then you
|
||||
might want to set the 'ttimeout' option.
|
||||
|
||||
*map-keys-fails*
|
||||
There is one situation where key codes might not be recognized:
|
||||
There are situations where key codes might not be recognized:
|
||||
- Vim can only read part of the key code. Mostly this is only the first
|
||||
character. This happens on some Unix versions in an xterm.
|
||||
- The key code is after character(s) that are mapped. E.g., "<F1><F1>" or
|
||||
"g<F1>".
|
||||
|
||||
The result is that the key code is not recognized in this situation, and the
|
||||
mapping fails.
|
||||
There are two actions needed to avoid this problem:
|
||||
mapping fails. There are two actions needed to avoid this problem:
|
||||
|
||||
- Remove the 'K' flag from 'cpoptions'. This will make Vim wait for the rest
|
||||
of the characters of the function key.
|
||||
- When using <F1> to <F4> the actual key code generated may correspond to
|
||||
@@ -480,6 +553,9 @@ special key: >
|
||||
Don't type a real <Esc>, Vim will recognize the key code and replace it with
|
||||
<F1> anyway.
|
||||
|
||||
Another problem may be that when keeping ALT or Meta pressed the terminal
|
||||
prepends ESC instead of setting the 8th bit. See |:map-alt-keys|.
|
||||
|
||||
*recursive_mapping*
|
||||
If you include the {lhs} in the {rhs} you have a recursive mapping. When
|
||||
{lhs} is typed, it will be replaced with {rhs}. When the {lhs} which is
|
||||
@@ -516,43 +592,104 @@ the original Vi, as long as there is only one undo command in the mapped
|
||||
sequence (having two undo commands in a mapped sequence did not make sense
|
||||
in the original Vi, you would get back the text before the first undo).
|
||||
|
||||
*:map-special-keys*
|
||||
There are three ways to map a special key:
|
||||
1. The Vi-compatible method: Map the key code. Often this is a sequence that
|
||||
starts with <Esc>. To enter a mapping like this you type ":map " and then
|
||||
you have to type CTRL-V before hitting the function key. Note that when
|
||||
the key code for the key is in the termcap (the t_ options), it will
|
||||
automatically be translated into the internal code and become the second
|
||||
way of mapping (unless the 'k' flag is included in 'cpoptions').
|
||||
2. The second method is to use the internal code for the function key. To
|
||||
enter such a mapping type CTRL-K and then hit the function key, or use
|
||||
the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc.
|
||||
(see table of keys |key-notation|, all keys from <Up> can be used). The
|
||||
first ten function keys can be defined in two ways: Just the number, like
|
||||
"#2", and with "<F>", like "<F2>". Both stand for function key 2. "#0"
|
||||
refers to function key 10, defined with option 't_f10', which may be
|
||||
function key zero on some keyboards. The <> form cannot be used when
|
||||
'cpoptions' includes the '<' flag.
|
||||
3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the
|
||||
termcap entry. Any string entry can be used. For example: >
|
||||
:map <t_F3> G
|
||||
< Maps function key 13 to "G". This does not work if 'cpoptions' includes
|
||||
the '<' flag.
|
||||
|
||||
The advantage of the second and third method is that the mapping will work on
|
||||
different terminals without modification (the function key will be
|
||||
translated into the same internal code or the actual key code, no matter what
|
||||
terminal you are using. The termcap must be correct for this to work, and you
|
||||
must use the same mappings).
|
||||
1.10 MAPPING ALT-KEYS *:map-alt-keys*
|
||||
|
||||
DETAIL: Vim first checks if a sequence from the keyboard is mapped. If it
|
||||
isn't the terminal key codes are tried (see |terminal-options|). If a
|
||||
terminal code is found it is replaced with the internal code. Then the check
|
||||
for a mapping is done again (so you can map an internal code to something
|
||||
else). What is written into the script file depends on what is recognized.
|
||||
If the terminal key code was recognized as a mapping the key code itself is
|
||||
written to the script file. If it was recognized as a terminal code the
|
||||
internal code is written to the script file.
|
||||
In the GUI Vim handles the Alt key itself, thus mapping keys with ALT should
|
||||
always work. But in a terminal Vim gets a sequence of bytes and has to figure
|
||||
out whether ALT was pressed or not.
|
||||
|
||||
By default Vim assumes that pressing the ALT key sets the 8th bit of a typed
|
||||
character. Most decent terminals can work that way, such as xterm, aterm and
|
||||
rxvt. If your <A-k> mappings don't work it might be that the terminal is
|
||||
prefixing the character with an ESC character. But you can just as well type
|
||||
ESC before a character, thus Vim doesn't know what happened (except for
|
||||
checking the delay between characters, which is not reliable).
|
||||
|
||||
As of this writing, some mainstream terminals like gnome-terminal and konsole
|
||||
use the ESC prefix. There doesn't appear a way to have them use the 8th bit
|
||||
instead. Xterm should work well by default. Aterm and rxvt should work well
|
||||
when started with the "--meta8" argument. You can also tweak resources like
|
||||
"metaSendsEscape", "eightBitInput" and "eightBitOutput".
|
||||
|
||||
On the Linux console, this behavior can be toggled with the "setmetamode"
|
||||
command. Bear in mind that not using an ESC prefix could get you in trouble
|
||||
with other programs. You should make sure that bash has the "convert-meta"
|
||||
option set to "on" in order for your Meta keybindings to still work on it
|
||||
(it's the default readline behavior, unless changed by specific system
|
||||
configuration). For that, you can add the line: >
|
||||
|
||||
set convert-meta on
|
||||
|
||||
to your ~/.inputrc file. If you're creating the file, you might want to use: >
|
||||
|
||||
$include /etc/inputrc
|
||||
|
||||
as the first line, if that file exists on your system, to keep global options.
|
||||
This may cause a problem for entering special characters, such as the umlaut.
|
||||
Then you should use CTRL-V before that character.
|
||||
|
||||
Bear in mind that convert-meta has been reported to have troubles when used in
|
||||
UTF-8 locales. On terminals like xterm, the "metaSendsEscape" resource can be
|
||||
toggled on the fly through the "Main Options" menu, by pressing Ctrl-LeftClick
|
||||
on the terminal; that's a good last resource in case you want to send ESC when
|
||||
using other applications but not when inside VIM.
|
||||
|
||||
|
||||
1.11 MAPPING AN OPERATOR *:map-operator*
|
||||
|
||||
An operator is used before a {motion} command. To define your own operator
|
||||
you must create mapping that first sets the 'operatorfunc' option and then
|
||||
invoke the |g@| operator. After the user types the {motion} command the
|
||||
specified function will be called.
|
||||
|
||||
*g@* *E774* *E775*
|
||||
g@{motion} Call the function set by the 'operatorfunc' option.
|
||||
The '[ mark is positioned at the start of the text
|
||||
moved over by {motion}, the '] mark on the last
|
||||
character of the text.
|
||||
The function is called with one String argument:
|
||||
"line" {motion} was |linewise|
|
||||
"char" {motion} was |characterwise|
|
||||
"block" {motion} was |blockwise-visual||
|
||||
Although "block" would rarely appear, since it can
|
||||
only result from Visual mode where "g@" is not useful.
|
||||
{not available when compiled without the +eval
|
||||
feature}
|
||||
|
||||
Here is an example that counts the number of spaces with <F4>: >
|
||||
|
||||
nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
|
||||
vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>
|
||||
|
||||
function! CountSpaces(type, ...)
|
||||
let sel_save = &selection
|
||||
let &selection = "inclusive"
|
||||
let reg_save = @@
|
||||
|
||||
if a:0 " Invoked from Visual mode, use '< and '> marks.
|
||||
silent exe "normal! `<" . a:type . "`>y"
|
||||
elseif a:type == 'line'
|
||||
silent exe "normal! '[V']y"
|
||||
elseif a:type == 'block'
|
||||
silent exe "normal! `[\<C-V>`]y"
|
||||
else
|
||||
silent exe "normal! `[v`]y"
|
||||
endif
|
||||
|
||||
echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
|
||||
|
||||
let &selection = sel_save
|
||||
let @@ = reg_save
|
||||
endfunction
|
||||
|
||||
Note that the 'selection' option is temporarily set to "inclusive" to be able
|
||||
to yank exactly the right text by using Visual mode from the '[ to the ']
|
||||
mark.
|
||||
|
||||
Also note that there is a separate mapping for Visual mode. It removes the
|
||||
"'<,'>" range that ":" inserts in Visual mode and invokes the function with
|
||||
visualmode() and an extra argument.
|
||||
|
||||
==============================================================================
|
||||
2. Abbreviations *abbreviations* *Abbreviations*
|
||||
@@ -641,7 +778,7 @@ This does not work if 'cpoptions' includes the '<' flag. |<>|
|
||||
You can even do more complicated things. For example, to consume the space
|
||||
typed after an abbreviation: >
|
||||
func Eatchar(pat)
|
||||
let c = nr2char(getchar())
|
||||
let c = nr2char(getchar(0))
|
||||
return (c =~ a:pat) ? '' : c
|
||||
endfunc
|
||||
iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR>
|
||||
@@ -813,11 +950,10 @@ local function or uses a local mapping.
|
||||
Otherwise, using "<SID>" outside of a script context is an error.
|
||||
|
||||
If you need to get the script number to use in a complicated script, you can
|
||||
use this trick: >
|
||||
:map <SID>xx <SID>xx
|
||||
:let s:sid = maparg("<SID>xx")
|
||||
:unmap <SID>xx
|
||||
And remove the trailing "xx".
|
||||
use this function: >
|
||||
function s:SID()
|
||||
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
|
||||
endfun
|
||||
|
||||
The "<SNR>" will be shown when listing functions and mappings. This is useful
|
||||
to find out what they are defined to.
|
||||
@@ -965,8 +1101,10 @@ completion can be enabled:
|
||||
-complete=custom,{func} custom completion, defined via {func}
|
||||
-complete=customlist,{func} custom completion, defined via {func}
|
||||
|
||||
Custom completion *:command-completion-custom*
|
||||
*E467* *E468*
|
||||
|
||||
Custom completion *:command-completion-custom*
|
||||
*:command-completion-customlist*
|
||||
*E467* *E468*
|
||||
It is possible to define customized completion schemes via the "custom,{func}"
|
||||
or the "customlist,{func}" completion argument. The {func} part should be a
|
||||
function with the following prototype >
|
||||
@@ -980,13 +1118,13 @@ For the "custom" argument, the function should return the completion
|
||||
candidates one per line in a newline separated string.
|
||||
|
||||
For the "customlist" argument, the function should return the completion
|
||||
candidates as a Vim List. Non-string items in the list are ignored.
|
||||
candidates as a Vim List. Non-string items in the list are ignored.
|
||||
|
||||
The function arguments are:
|
||||
ArgLead the leading portion of the argument currently being
|
||||
completed on
|
||||
CmdLine the entire command line
|
||||
CursorPos the cursor position in it
|
||||
CursorPos the cursor position in it (byte index)
|
||||
The function may use these for determining context. For the "custom"
|
||||
argument, it is not necessary to filter candidates against the (implicit
|
||||
pattern in) ArgLead. Vim will do filter the candidates with its regexp engine
|
||||
@@ -1008,6 +1146,7 @@ the 'path' option: >
|
||||
: return split(globpath(&path, a:ArgLead), "\n")
|
||||
:endfun
|
||||
<
|
||||
|
||||
Range handling *E177* *E178*
|
||||
|
||||
By default, user-defined commands do not accept a line number range. However,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Jul 09
|
||||
*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar et al.
|
||||
@@ -484,6 +484,12 @@ conversion needs to be done. These conversions are supported:
|
||||
request a very large buffer, more than Vim is willing to provide).
|
||||
Try getting another iconv() implementation.
|
||||
|
||||
*iconv-dynamic*
|
||||
On MS-Windows Vim can be compiled with the |+iconv/dyn| feature. This means
|
||||
Vim will search for the "iconv.dll" and "libiconv.dll" libraries. When
|
||||
neither of them can be found Vim will still work but some conversions won't be
|
||||
possible.
|
||||
|
||||
==============================================================================
|
||||
4. Using a terminal *mbyte-terminal*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*message.txt* For Vim version 7.0aa. Last change: 2005 Aug 01
|
||||
*message.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -19,11 +19,12 @@ The ":messages" command can be used to view previously given messages. This
|
||||
is especially useful when messages have been overwritten or truncated. This
|
||||
depends on the 'shortmess' option.
|
||||
|
||||
The number of remembered messages is fixed at 20.
|
||||
The number of remembered messages is fixed at 20 for the tiny version and 100
|
||||
for other versions.
|
||||
|
||||
*g<*
|
||||
The "g<" command can be used to see the last page of previous command output.
|
||||
This is especially useful if you accidentally typed <Space> at the hit-return
|
||||
This is especially useful if you accidentally typed <Space> at the hit-enter
|
||||
prompt.
|
||||
Note: when you stopped the output with "q" at the more prompt only up to that
|
||||
point will be displayed.
|
||||
@@ -589,6 +590,7 @@ The file is read-only and you are making a change to it anyway. You can use
|
||||
the |FileChangedRO| autocommand event to avoid this message (the autocommand
|
||||
must reset the 'readonly' option). See 'modifiable' to completely disallow
|
||||
making changes to a file.
|
||||
This message is only given for the first change after 'readonly' has been set.
|
||||
|
||||
*W13* >
|
||||
Warning: File "{filename}" has been created after editing started
|
||||
@@ -749,9 +751,12 @@ and the screen is about to be redrawn:
|
||||
-> Press <Enter> or <Space> to redraw the screen and continue, without that
|
||||
key being used otherwise.
|
||||
-> Press ':' or any other Normal mode command character to start that command.
|
||||
-> Press 'k', 'u', 'b' or 'g' to scroll back in the messages. This works the
|
||||
same way as at the |more-prompt|. Only works when 'compatible' is off and
|
||||
'more' is on.
|
||||
-> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This
|
||||
works the same way as at the |more-prompt|. Only works when 'compatible'
|
||||
is off and 'more' is on.
|
||||
-> Pressing 'j', 'd' or <Down> is ignored when messages scrolled off the top
|
||||
of the screen, 'compatible' is off and 'more' is on, to avoid that typing
|
||||
one 'j' too many causes the messages to disappear.
|
||||
-> Press <C-Y> to copy (yank) a modeless selection to the clipboard register.
|
||||
-> Use a menu. The characters defined for Cmdline-mode are used.
|
||||
-> When 'mouse' contains the 'r' flag, clicking the left mouse button works
|
||||
@@ -768,6 +773,9 @@ To reduce the number of hit-enter prompts:
|
||||
- Add flags to 'shortmess'.
|
||||
- Reset 'showcmd' and/or 'ruler'.
|
||||
|
||||
If your script causes the hit-enter prompt and you don't know why, you may
|
||||
find the |v:scrollstart| variable useful.
|
||||
|
||||
Also see 'mouse'. The hit-enter message is highlighted with the |hl-Question|
|
||||
group.
|
||||
|
||||
@@ -813,4 +821,8 @@ Any other key causes the meaning of the keys to be displayed.
|
||||
Note: The typed key is directly obtained from the terminal, it is not mapped
|
||||
and typeahead is ignored.
|
||||
|
||||
The |g<| command can be used to see the last page of previous command output.
|
||||
This is especially useful if you accidentally typed <Space> at the hit-enter
|
||||
prompt.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*motion.txt* For Vim version 7.0aa. Last change: 2005 Jul 31
|
||||
*motion.txt* For Vim version 7.0aa. Last change: 2006 Jan 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -57,6 +57,7 @@ or change text. The following operators are available:
|
||||
|>| > shift right
|
||||
|<| < shift left
|
||||
|zf| zf define a fold
|
||||
|g@| g@ call function set with the 'operatorfunc' option
|
||||
|
||||
If the motion includes a count and the operator also had a count before it,
|
||||
the two counts are multiplied. For example: "2d3w" deletes six words.
|
||||
@@ -385,10 +386,11 @@ These commands move over words or WORDS.
|
||||
*word*
|
||||
A word consists of a sequence of letters, digits and underscores, or a
|
||||
sequence of other non-blank characters, separated with white space (spaces,
|
||||
tabs, <EOL>). This can be changed with the 'iskeyword' option.
|
||||
tabs, <EOL>). This can be changed with the 'iskeyword' option. An empty line
|
||||
is also considered to be a word.
|
||||
*WORD*
|
||||
A WORD consists of a sequence of non-blank characters, separated with white
|
||||
space. An empty line is also considered to be a word and a WORD.
|
||||
space. An empty line is also considered to be a WORD.
|
||||
|
||||
A sequence of folded lines is counted for one word of a single character.
|
||||
"w" and "W", "e" and "E" move to the start/end of the first word or WORD after
|
||||
@@ -642,6 +644,8 @@ i' *v_i'* *i'*
|
||||
i` *v_i`* *i`*
|
||||
Like a", a' and a`, but exclude the quotes and
|
||||
repeating won't extend the Visual selection.
|
||||
Special case: With a count of 2 the quotes are
|
||||
included, but no extra white space as with a"/a'/a`.
|
||||
|
||||
When used after an operator:
|
||||
For non-block objects:
|
||||
@@ -971,7 +975,7 @@ These commands are not marks themselves, but jump to a mark:
|
||||
position. E.g., when updating a "Last change"
|
||||
timestamp in the first line: >
|
||||
|
||||
:let lnum = getline(".")
|
||||
:let lnum = line(".")
|
||||
:keepjumps normal gg
|
||||
:call SetLastChange()
|
||||
:keepjumps exe "normal " . lnum . "G"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*netbeans.txt* For Vim version 7.0aa. Last change: 2005 Apr 04
|
||||
*netbeans.txt* For Vim version 7.0aa. Last change: 2006 Feb 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Gordon Prieur
|
||||
@@ -179,6 +179,7 @@ These messages are specific for NetBeans:
|
||||
Region is guarded, cannot modify
|
||||
NetBeans defines guarded areas in the text, which you cannot
|
||||
change.
|
||||
Also sets the current buffer, if necessary.
|
||||
|
||||
*E656*
|
||||
NetBeans disallows writes of unmodified buffers
|
||||
@@ -485,8 +486,10 @@ setContentType
|
||||
Not implemented.
|
||||
|
||||
setDot off Make the buffer the current buffer and set the cursor at the
|
||||
specified position. If there are folds they are opened to
|
||||
make the cursor line visible.
|
||||
specified position. If the buffer is open in another window
|
||||
than make that window the current window.
|
||||
If there are folds they are opened to make the cursor line
|
||||
visible.
|
||||
In version 2.1 "lnum/col" can be used instead of "off".
|
||||
|
||||
setExitDelay seconds
|
||||
@@ -566,6 +569,7 @@ stopDocumentListen
|
||||
|
||||
unguard off len
|
||||
Opposite of "guard", remove guarding for a text area.
|
||||
Also sets the current buffer, if necessary.
|
||||
|
||||
version Not implemented.
|
||||
|
||||
@@ -612,6 +616,7 @@ insert off text
|
||||
123 no problem
|
||||
123 !message failed
|
||||
Note that the message in the reply is not quoted.
|
||||
Also sets the current buffer, if necessary.
|
||||
|
||||
remove off length
|
||||
Delete "length" bytes of text at position "off". Both
|
||||
@@ -620,6 +625,7 @@ remove off length
|
||||
123 no problem
|
||||
123 !message failed
|
||||
Note that the message in the reply is not quoted.
|
||||
Also sets the current buffer, if necessary.
|
||||
|
||||
saveAndExit Perform the equivalent of closing Vim: ":confirm qall".
|
||||
If there are no changed files or the user does not cancel the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
*options.txt* For Vim version 7.0aa. Last change: 2006 Mar 03
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -19,7 +19,7 @@ achieve special effects. These options come in three forms:
|
||||
string has a string value
|
||||
|
||||
==============================================================================
|
||||
1. Setting options *set-option*
|
||||
1. Setting options *set-option* *E764*
|
||||
|
||||
*:se* *:set*
|
||||
:se[t] Show all options that differ from their default value.
|
||||
@@ -76,10 +76,8 @@ achieve special effects. These options come in three forms:
|
||||
comma separated list, a comma is added, unless the
|
||||
value was empty.
|
||||
If the option is a list of flags, superfluous flags
|
||||
are removed. Otherwise there is no check for doubled
|
||||
values. You can avoid this by removing a value first.
|
||||
Example: >
|
||||
:set guioptions-=T guioptions+=T
|
||||
are removed. When adding a flag that was already
|
||||
present the option value doesn't change.
|
||||
< Also see |:set-args| above.
|
||||
{not in Vi}
|
||||
|
||||
@@ -129,7 +127,7 @@ Note that an option may also have been set as a side effect of setting
|
||||
{not available when compiled without the +eval feature}
|
||||
|
||||
*:set-termcap* *E522*
|
||||
For {option} the form "t_xx" may be used to set a termcap option. This will
|
||||
For {option} the form "t_xx" may be used to set a terminal option. This will
|
||||
override the value from the termcap. You can then use it in a mapping. If
|
||||
the "xx" part contains special characters, use the <t_xx> form: >
|
||||
:set <t_#4>=^[Ot
|
||||
@@ -164,6 +162,11 @@ include the "|" in the option value, use "\|" instead. This example sets the
|
||||
This sets the 'titlestring' option to "hi" and 'iconstring' to "there": >
|
||||
:set titlestring=hi|set iconstring=there
|
||||
|
||||
Similarly, the double quote character starts a comment. To include the '"' in
|
||||
the option value, use '\"' instead. This example sets the 'titlestring'
|
||||
option to 'hi "there"': >
|
||||
:set titlestring=hi\ \"there\"
|
||||
|
||||
For MS-DOS and WIN32 backslashes in file names are mostly not removed. More
|
||||
precise: For options that expect a file name (those where environment
|
||||
variables are expanded) a backslash before a normal file name character is not
|
||||
@@ -560,12 +563,20 @@ is entered, this is almost like having global options. If 's' and 'S' are not
|
||||
present, the options are copied from the currently active buffer when the
|
||||
buffer is created.
|
||||
|
||||
Not all options are supported in all versions. To test if option "foo" can be
|
||||
used with ":set" use "exists('&foo')". This doesn't mean the value is
|
||||
actually remembered and works. Some options are hidden, which means that you
|
||||
can set them but the value is not remembered. To test if option "foo" is
|
||||
really supported use "exists('+foo')".
|
||||
Hidden options *hidden-options*
|
||||
|
||||
Not all options are supported in all versions. This depends on the supported
|
||||
features and sometimes on the system. A remark about this is in curly braces
|
||||
below. When an option is not supported it may still be set without getting an
|
||||
error, this is called a hidden option. You can't get the value of a hidden
|
||||
option though, it is not stored.
|
||||
|
||||
To test if option "foo" can be used with ":set" use something like this: >
|
||||
if exists('&foo')
|
||||
This also returns true for a hidden option. To test if option "foo" is really
|
||||
supported use something like this: >
|
||||
if exists('+foo')
|
||||
<
|
||||
*E355*
|
||||
A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
@@ -980,6 +991,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Watch out for special characters, see |option-backslash|.
|
||||
When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the
|
||||
default value. "/tmp/*" is only used for Unix.
|
||||
Note that the default also makes sure that "crontab -e" works (when a
|
||||
backup would be made by renaming the original file crontab won't see
|
||||
the newly created file). Also see 'backupcopy' and |crontab|.
|
||||
|
||||
*'balloondelay'* *'bdlay'*
|
||||
'balloondelay' 'bdlay' number (default: 600)
|
||||
@@ -1028,6 +1042,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Vim does not try to send a message to an external debugger (Netbeans
|
||||
or Sun Workshop).
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
It is not allowed to change text or jump to another window while
|
||||
evaluating 'balloonexpr' |textlock|.
|
||||
|
||||
To check whether line breaks in the balloon text work use this check: >
|
||||
if has("balloon_multiline")
|
||||
<
|
||||
@@ -1163,6 +1183,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
autocommands. {not available when compiled without the
|
||||
|+autocmd| feature}
|
||||
quickfix quickfix buffer, contains list of errors |:cwindow|
|
||||
or list of locations |:lwindow|
|
||||
help help buffer (you are not supposed to set this
|
||||
manually)
|
||||
|
||||
@@ -1171,8 +1192,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
Be careful with changing this option, it can have many side effects!
|
||||
|
||||
A "quickfix" buffer is only used for the error list. This value is
|
||||
set by the |:cwindow| command and you are not supposed to change it.
|
||||
A "quickfix" buffer is only used for the error list and the location
|
||||
list. This value is set by the |:cwindow| and |:lwindow| commands and
|
||||
you are not supposed to change it.
|
||||
|
||||
"nofile" and "nowrite" buffers are similar:
|
||||
both: The buffer is not to be written to disk, ":w" doesn't
|
||||
@@ -1427,6 +1449,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
to use the size for the GUI, put the command in your |gvimrc| file.
|
||||
When you set this option and Vim is unable to change the physical
|
||||
number of columns of the display, the display may be messed up.
|
||||
Mimimum value is 12, maximum value is 10000.
|
||||
|
||||
*'comments'* *'com'* *E524* *E525*
|
||||
'comments' 'com' string (default
|
||||
@@ -1553,6 +1576,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
u scan the unloaded buffers that are in the buffer list
|
||||
U scan the buffers that are not in the buffer list
|
||||
k scan the files given with the 'dictionary' option
|
||||
kspell use the currently active spell checking |spell|
|
||||
k{dict} scan the file {dict}. Several "k" flags can be given,
|
||||
patterns are valid too. For example: >
|
||||
:set cpt=k/usr/dict/*,k~/spanish
|
||||
@@ -1588,92 +1612,32 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not in Vi}
|
||||
{not available when compiled without the +eval
|
||||
or +insert_expand feature}
|
||||
This option specifies a function to be used for CTRL-X CTRL-U
|
||||
completion. |i_CTRL-X_CTRL-U|
|
||||
This option specifies a function to be used for Insert mode completion
|
||||
with CTRL-X CTRL-U. |i_CTRL-X_CTRL-U|
|
||||
See |complete-functions| for an explanation of how the function is
|
||||
invoked and what it should return.
|
||||
|
||||
The function will be invoked with two arguments. First the function
|
||||
is called to find the start of the text to be completed. Secondly the
|
||||
function is called to actually find the matches.
|
||||
|
||||
On the first invocation the arguments are:
|
||||
a:findstart 1
|
||||
a:base empty
|
||||
*'completeopt'* *'cot'*
|
||||
'completeopt' 'cot' string (default: "menu")
|
||||
global
|
||||
{not in Vi}
|
||||
A comma separated list of options for Insert mode completion
|
||||
|ins-completion|. The supported values are:
|
||||
|
||||
The function must return the column of where the completion starts.
|
||||
It must be a number between zero and the cursor column "col('.')".
|
||||
This involves looking at the characters just before the cursor and
|
||||
including those characters that could be part of the completed item.
|
||||
The text between this column and the cursor column will be replaced
|
||||
with the matches. Return -1 if no completion can be done.
|
||||
menu Use a popup menu to show the possible completions. The
|
||||
menu is only shown when there is more than one match and
|
||||
sufficient colors are available. |ins-completion-menu|
|
||||
|
||||
On the second invocation the arguments are:
|
||||
a:findstart 0
|
||||
a:base the text with which matches should match, what was
|
||||
located in the first call
|
||||
menuone Use the popup menu also when there is only one match.
|
||||
Useful when there is additional information about the
|
||||
match, e.g., what file it comes from.
|
||||
|
||||
The function must return a List with the matching words. These
|
||||
matches usually include the "a:base" text. When there are no matches
|
||||
return an empty List.
|
||||
longest Only insert the longest common text of the matches. Use
|
||||
CTRL-L to add more characters. Whether case is ignored
|
||||
depends on the kind of completion. For buffer text the
|
||||
'ignorecase' option is used.
|
||||
|
||||
When searching for matches takes some time call |complete_add()| to
|
||||
add each match to the total list. These matches should then not
|
||||
appear in the returned list! Call |complete_check()| now and then to
|
||||
allow the user to press a key while still searching for matches. Stop
|
||||
searching when it returns non-zero.
|
||||
|
||||
The function may move the cursor, it is restored afterwards.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
An example that completes the names of the months: >
|
||||
fun! CompleteMonths(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
while start > 0 && line[start - 1] =~ '\a'
|
||||
let start -= 1
|
||||
endwhile
|
||||
return start
|
||||
else
|
||||
" find months matching with "a:base"
|
||||
let res = []
|
||||
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
|
||||
if m =~ '^' . a:base
|
||||
call add(res, m)
|
||||
endif
|
||||
endfor
|
||||
return res
|
||||
endif
|
||||
endfun
|
||||
set completefunc=CompleteMonths
|
||||
<
|
||||
The same, but now pretending searching for matches is slow: >
|
||||
fun! CompleteMonths(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
while start > 0 && line[start - 1] =~ '\a'
|
||||
let start -= 1
|
||||
endwhile
|
||||
return start
|
||||
else
|
||||
" find months matching with "a:base"
|
||||
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
|
||||
if m =~ '^' . a:base
|
||||
call complete_add(m)
|
||||
endif
|
||||
sleep 300m " simulate searching for next match
|
||||
if complete_check()
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
return []
|
||||
endif
|
||||
endfun
|
||||
set completefunc=CompleteMonths
|
||||
<
|
||||
|
||||
*'confirm'* *'cf'* *'noconfirm'* *'nocf'*
|
||||
'confirm' 'cf' boolean (default off)
|
||||
@@ -1797,7 +1761,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
F When included, a ":write" command with a file name
|
||||
argument will set the file name for the current
|
||||
buffer, if the current buffer doesn't have a file name
|
||||
yet.
|
||||
yet. Also see |cpo-P|.
|
||||
*cpo-g*
|
||||
g Goto line 1 when using ":edit" without argument.
|
||||
*cpo-H*
|
||||
@@ -1866,6 +1830,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*cpo-p*
|
||||
p Vi compatible Lisp indenting. When not present, a
|
||||
slightly better algorithm is used.
|
||||
*cpo-P*
|
||||
P When included, a ":write" command that appends to a
|
||||
file will set the file name for the current buffer, if
|
||||
the current buffer doesn't have a file name yet and
|
||||
the 'F' flag is also included |cpo-F|.
|
||||
*cpo-q*
|
||||
q When joining multiple lines leave the cursor at the
|
||||
position where it would be when joining two lines.
|
||||
@@ -1955,11 +1924,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
C-indenting.
|
||||
*cpo--*
|
||||
- When included, a vertical movement command fails when
|
||||
it would above the first line or below the last line.
|
||||
Without it the cursor moves to the first or last line,
|
||||
unless it already was in that line.
|
||||
it would go above the first line or below the last
|
||||
line. Without it the cursor moves to the first or
|
||||
last line, unless it already was in that line.
|
||||
Applies to the commands "-", "k", CTRL-P, "+", "j",
|
||||
CTRL-N and CTRL-J.
|
||||
CTRL-N, CTRL-J and ":1234".
|
||||
*cpo-+*
|
||||
+ When included, a ":write file" command will reset the
|
||||
'modified' flag of the buffer, even though the buffer
|
||||
@@ -2074,8 +2043,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
{not in Vi}
|
||||
When set to "msg", error messages that would otherwise be omitted will
|
||||
be given anyway. This is useful when debugging 'foldexpr' or
|
||||
'indentexpr'.
|
||||
be given anyway. This is useful when debugging 'foldexpr',
|
||||
'formatexpr' or 'indentexpr'.
|
||||
When set to "beep", a message will be given when otherwise only a beep
|
||||
would be produced.
|
||||
The values can be combined, separated by a comma.
|
||||
@@ -2121,6 +2090,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
contain a list of words. This can be one word per line, or several
|
||||
words per line, separated by non-keyword characters (white space is
|
||||
preferred). Maximum line length is 510 bytes.
|
||||
When this option is empty, or an entry "spell" is present, spell
|
||||
checking is enabled the currently active spelling is used. |spell|
|
||||
To include a comma in a file name precede it with a backslash. Spaces
|
||||
after a comma are ignored, otherwise spaces are included in the file
|
||||
name. See |option-backslash| about using backslashes.
|
||||
@@ -2483,6 +2454,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
When reading a file 'fileencoding' will be set from 'fileencodings'.
|
||||
To read a file in a certain encoding it won't work by setting
|
||||
'fileencoding', use the |++enc| argument.
|
||||
For a new file the global value of 'fileencoding' is used.
|
||||
Prepending "8bit-" and "2byte-" has no meaning here, they are ignored.
|
||||
When the option is set, the value is converted to lowercase. Thus
|
||||
you can set it with uppercase values too. '_' characters are
|
||||
@@ -2518,7 +2490,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'encoding' is "utf-8" (or one of the other Unicode variants)
|
||||
conversion is most likely done in a way that the reverse
|
||||
conversion results in the same text. When 'encoding' is not
|
||||
"utf-8" special characters may be lost!
|
||||
"utf-8" some non-ASCII characters may be lost! You can use
|
||||
the |++bad| argument to specify what is done with characters
|
||||
that can't be converted.
|
||||
For an empty file or a file with only ASCII characters most encodings
|
||||
will work and the first entry of 'fileencodings' will be used (except
|
||||
"ucs-bom", which requires the BOM to be present). If you prefer
|
||||
@@ -2528,9 +2502,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
\ set fenc=iso-2022-jp | endif
|
||||
< This sets 'fileencoding' to "iso-2022-jp" if the file does not contain
|
||||
non-blank characters.
|
||||
Note that 'fileencodings' is not used for an new file, 'fileencoding'
|
||||
is always empty then. This means that a non-existing file may get a
|
||||
different encoding than an empty file.
|
||||
When the |++enc| argument is used then the value of 'fileencodings' is
|
||||
not used.
|
||||
Note that 'fileencodings' is not used for a new file, the global value
|
||||
of 'fileencoding' is used instead. You can set it with: >
|
||||
:setglobal fenc=iso-8859-2
|
||||
< This means that a non-existing file may get a different encoding than
|
||||
an empty file.
|
||||
The special value "ucs-bom" can be used to check for a Unicode BOM
|
||||
(Byte Order Mark) at the start of the file. It must not be preceded
|
||||
by "utf-8" or another Unicode encoding for this to work properly.
|
||||
@@ -2740,8 +2718,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not available when compiled without the |+folding|
|
||||
or |+eval| feature}
|
||||
The expression used for when 'foldmethod' is "expr". It is evaluated
|
||||
for each line to obtain its fold level. See |fold-expr|. Also see
|
||||
|eval-sandbox|.
|
||||
for each line to obtain its fold level. See |fold-expr|.
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
It is not allowed to change text or jump to another window while
|
||||
evaluating 'foldexpr' |textlock|.
|
||||
|
||||
*'foldignore'* *'fdi'*
|
||||
'foldignore' 'fdi' string (default: "#")
|
||||
@@ -2873,6 +2856,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
An expression which is used to specify the text displayed for a closed
|
||||
fold. See |fold-foldtext|.
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
It is not allowed to change text or jump to another window while
|
||||
evaluating 'foldtext' |textlock|.
|
||||
|
||||
*'formatoptions'* *'fo'*
|
||||
'formatoptions' 'fo' string (Vim default: "tcq", Vi default: "vt")
|
||||
local to buffer
|
||||
@@ -2905,16 +2894,43 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
{not in Vi}
|
||||
The name of an external program that will be used to format the lines
|
||||
selected with the "gq" command. The program must take the input on
|
||||
selected with the |gq| operator. The program must take the input on
|
||||
stdin and produce the output on stdout. The Unix program "fmt" is
|
||||
such a program. If this option is an empty string, the internal
|
||||
format function will be used |C-indenting|. Environment variables are
|
||||
expanded |:set_env|. See |option-backslash| about including spaces
|
||||
and backslashes.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
such a program.
|
||||
If the 'formatexpr' option is not empty it will be used instead.
|
||||
Otherwise, if 'formatprg' option is an empty string, the internal
|
||||
format function will be used |C-indenting|.
|
||||
Environment variables are expanded |:set_env|. See |option-backslash|
|
||||
about including spaces and backslashes.
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
*'fsync'* *'fs'*
|
||||
*'formatexpr'* *'fex'*
|
||||
'formatexpr' 'fex' string (default "")
|
||||
local to buffer
|
||||
{not in Vi}
|
||||
{not available when compiled without the |+eval|
|
||||
feature}
|
||||
Expression which is evaluated to format a range of lines for the |gq|
|
||||
operator. The |v:lnum| variable holds the first line to be formatted,
|
||||
|v:count| the number of lines to be formatted.
|
||||
When this option is empty 'formatprg' is used.
|
||||
Example: >
|
||||
:set formatexpr=mylang#Format()
|
||||
< This will invoke the mylang#Format() function in the
|
||||
autoload/mylang.vim file in 'runtimepath'. |autoload|
|
||||
|
||||
The expression is also evaluated when 'textwidth' is set and adding
|
||||
text beyond that limit. This happens under the same conditions as
|
||||
when internal formatting is used. Make sure the cursor is kept in the
|
||||
same spot relative to the text then! The |mode()| function will
|
||||
return "i" or "R" in this situation. When the function returns
|
||||
non-zero Vim will fall back to using the internal format mechanism.
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
*'fsync'* *'fs'*
|
||||
'fsync' 'fs' boolean (default on)
|
||||
global
|
||||
{not in Vi}
|
||||
@@ -2968,7 +2984,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
also work well with a single file: >
|
||||
:set grepprg=grep\ -nH
|
||||
< Special value: When 'grepprg' is set to "internal" the |:grep| command
|
||||
works like |:vimgrep| and |:grepadd| like |:vimgrepadd|.
|
||||
works like |:vimgrep|, |:lgrep| like |:lvimgrep|, |:grepadd| like
|
||||
|:vimgrepadd| and |:lgrepadd| like |:lvimgrepadd|.
|
||||
See also the section |:make_makeprg|, since most of the comments there
|
||||
apply equally to 'grepprg'.
|
||||
For Win32, the default is "findstr /n" if "findstr.exe" can be found,
|
||||
@@ -3242,6 +3259,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'c' Use console dialogs instead of popup dialogs for simple
|
||||
choices.
|
||||
|
||||
'e' Add tab pages when indicated with 'showtabline'.
|
||||
'guitablabel' can be used to change the text in the labels.
|
||||
When 'e' is missing a non-GUI tab pages line may be used.
|
||||
|
||||
'f' Foreground: Don't use fork() to detach the GUI from the shell
|
||||
where it was started. Use this for programs that wait for the
|
||||
editor to finish (e.g., an e-mail program). Alternatively you
|
||||
@@ -3302,6 +3323,22 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Only in the GUI: If on, an attempt is made to open a pseudo-tty for
|
||||
I/O to/from shell commands. See |gui-pty|.
|
||||
|
||||
*'guitablabel'* *'gtl'*
|
||||
'guitablabel' 'gtl' string (default empty)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with GUI enabled and
|
||||
with the +windows feature}
|
||||
When nonempty describes the text to use in a label of the GUI tab
|
||||
pages line. When empty Vim will use a default label. See
|
||||
|setting-guitablabel| for more info.
|
||||
|
||||
The format of this option is like that of 'statusline'.
|
||||
|
||||
Only used when the GUI tab pages line is displayed. 'e' must be
|
||||
present in 'guioptions'. For the non-GUI tab pages line 'tabline' is
|
||||
used.
|
||||
|
||||
*'helpfile'* *'hf'*
|
||||
'helpfile' 'hf' string (default (MSDOS) "$VIMRUNTIME\doc\help.txt"
|
||||
(others) "$VIMRUNTIME/doc/help.txt")
|
||||
@@ -3374,7 +3411,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
f:Folded,F:FoldColumn,A:DiffAdd,
|
||||
C:DiffChange,D:DiffDelete,T:DiffText,
|
||||
>:SignColumn,B:SpellBad,P:SpellCap,
|
||||
R:SpellRare,L:SpellLocal")
|
||||
R:SpellRare,L:SpellLocal,
|
||||
+:Pmenu,=:PmenuSel,
|
||||
x:PmenuSbar,X:PmenuThumb")
|
||||
global
|
||||
{not in Vi}
|
||||
This option can be used to set highlighting mode for various
|
||||
@@ -3415,6 +3454,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|hl-SpellCap| P word that should start with capital|spell|
|
||||
|hl-SpellRare| R rare word |spell|
|
||||
|hl-SpellLocal| L word from other region |spell|
|
||||
|hl-Pmenu| + popup menu normal line
|
||||
|hl-PmenuSel| = popup menu normal line
|
||||
|hl-PmenuSbar| x popup menu scrollbar
|
||||
|hl-PmenuThumb| X popup menu scrollbar thumb
|
||||
|
||||
The display modes are:
|
||||
r reverse (termcap entry "mr" and "me")
|
||||
@@ -3639,9 +3682,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Pattern to be used to find an include command. It is a search
|
||||
pattern, just like for the "/" command (See |pattern|). The default
|
||||
value is for C programs. This option is used for the commands "[i",
|
||||
"]I", "[d", etc. The 'isfname' option is used to recognize the file
|
||||
name that comes after the matched pattern. See |option-backslash|
|
||||
about including spaces and backslashes.
|
||||
"]I", "[d", etc.
|
||||
Normally the 'isfname' option is used to recognize the file name that
|
||||
comes after the matched pattern. But if "\zs" appears in the pattern
|
||||
then the text matched from "\zs" to the end, or until "\ze" if it
|
||||
appears, is used as the file name. Use this to include characters
|
||||
that are not in 'isfname', such as a space. You can then use
|
||||
'includeexpr' to process the matched text.
|
||||
See |option-backslash| about including spaces and backslashes.
|
||||
|
||||
*'includeexpr'* *'inex'*
|
||||
'includeexpr' 'inex' string (default "")
|
||||
@@ -3653,11 +3701,17 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
option to a file name. Mostly useful to change "." to "/" for Java: >
|
||||
:set includeexpr=substitute(v:fname,'\\.','/','g')
|
||||
< The "v:fname" variable will be set to the file name that was detected.
|
||||
Evaluated in the |sandbox|.
|
||||
|
||||
Also used for the |gf| command if an unmodified file name can't be
|
||||
found. Allows doing "gf" on the name after an 'include' statement.
|
||||
Also used for |<cfile>|.
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
It is not allowed to change text or jump to another window while
|
||||
evaluating 'includeexpr' |textlock|.
|
||||
|
||||
*'incsearch'* *'is'* *'noincsearch'* *'nois'*
|
||||
'incsearch' 'is' boolean (default off)
|
||||
global
|
||||
@@ -3689,7 +3743,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'smartindent' indenting.
|
||||
When 'paste' is set this option is not used for indenting.
|
||||
The expression is evaluated with |v:lnum| set to the line number for
|
||||
which the indent is to be computed. The cursor is also as this line
|
||||
which the indent is to be computed. The cursor is also in this line
|
||||
when the expression is evaluated (but it may be moved around).
|
||||
The expression must return the number of spaces worth of indent. It
|
||||
can return "-1" to keep the current indent (this means 'autoindent' is
|
||||
@@ -3703,9 +3757,16 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:set indentexpr=GetMyIndent()
|
||||
< Error messages will be suppressed, unless the 'debug' option contains
|
||||
"msg".
|
||||
See |indent-expression|. Also see |eval-sandbox|.
|
||||
See |indent-expression|.
|
||||
NOTE: This option is made empty when 'compatible' is set.
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
It is not allowed to change text or jump to another window while
|
||||
evaluating 'indentexpr' |textlock|.
|
||||
|
||||
|
||||
*'indentkeys'* *'indk'*
|
||||
'indentkeys' 'indk' string (default "0{,0},:,0#,!^F,o,O,e")
|
||||
local to buffer
|
||||
@@ -3958,8 +4019,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
specified with multi-byte characters (e.g., UTF-8), but only the lower
|
||||
8 bits of each character will be used.
|
||||
|
||||
Example (for Greek): *greek* >
|
||||
:set langmap=<EFBFBD>A,<EFBFBD>B,<EFBFBD>C,<EFBFBD>D,<EFBFBD>E,<EFBFBD>F,<EFBFBD>G,<EFBFBD>H,<EFBFBD>I,<EFBFBD>J,<EFBFBD>K,<EFBFBD>L,<EFBFBD>M,<EFBFBD>N,<EFBFBD>O,<EFBFBD>P,QQ,<EFBFBD>R,<EFBFBD>S,<EFBFBD>T,<EFBFBD>U,<EFBFBD>V,WW,<EFBFBD>X,<EFBFBD>Y,<EFBFBD>Z,<EFBFBD>a,<EFBFBD>b,<EFBFBD>c,<EFBFBD>d,<EFBFBD>e,<EFBFBD>f,<EFBFBD>g,<EFBFBD>h,<EFBFBD>i,<EFBFBD>j,<EFBFBD>k,<EFBFBD>l,<EFBFBD>m,<EFBFBD>n,<EFBFBD>o,<EFBFBD>p,qq,<EFBFBD>r,<EFBFBD>s,<EFBFBD>t,<EFBFBD>u,<EFBFBD>v,<EFBFBD>w,<EFBFBD>x,<EFBFBD>y,<EFBFBD>z
|
||||
Example (for Greek, in UTF-8): *greek* >
|
||||
:set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
|
||||
< Example (exchanges meaning of z and y for commands): >
|
||||
:set langmap=zy,yz,ZY,YZ
|
||||
<
|
||||
@@ -4058,7 +4119,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Vim limits the number of lines to what fits on the screen. You can
|
||||
use this command to get the tallest window possible: >
|
||||
:set lines=999
|
||||
< If you get less lines than expected, check the 'guiheadroom' option.
|
||||
< Minimum value is 2, maximum value is 1000.
|
||||
If you get less lines than expected, check the 'guiheadroom' option.
|
||||
When you set this option and Vim is unable to change the physical
|
||||
number of lines of the display, the display may be messed up.
|
||||
|
||||
@@ -4553,12 +4615,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
This defines what bases Vim will consider for numbers when using the
|
||||
CTRL-A and CTRL-X commands for adding to and subtracting from a number
|
||||
respectively; see |CTRL-A| for more info on these commands.
|
||||
alpha if included, single alphabetical characters will be
|
||||
alpha If included, single alphabetical characters will be
|
||||
incremented or decremented. This is useful for a list with a
|
||||
letter index a), b), etc.
|
||||
octal if included, numbers that start with a zero will be considered
|
||||
octal If included, numbers that start with a zero will be considered
|
||||
to be octal. Example: Using CTRL-A on "007" results in "010".
|
||||
hex if included, numbers starting with "0x" or "0X" will be
|
||||
hex If included, numbers starting with "0x" or "0X" will be
|
||||
considered to be hexadecimal. Example: Using CTRL-X on
|
||||
"0x100" results in "0x0ff".
|
||||
Numbers which simply begin with a digit in the range 1-9 are always
|
||||
@@ -4584,7 +4646,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{only available when compiled with the |+linebreak|
|
||||
feature}
|
||||
Minimal number of columns to use for the line number. Only relevant
|
||||
when the 'number' option is set.
|
||||
when the 'number' option is set or printing lines with a line number.
|
||||
Since one space is always between the number and the text, there is
|
||||
one less character for the number itself.
|
||||
The value is the minimum width. A bigger width is used when needed to
|
||||
@@ -4594,16 +4656,27 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The minimum value is 1, the maximum value is 10.
|
||||
NOTE: 'numberwidth' is reset to 8 when 'compatible' is set.
|
||||
|
||||
*'occultfunc'* *'ofu'*
|
||||
'occultfunc' 'ofu' string (default: empty)
|
||||
*'omnifunc'* *'ofu'*
|
||||
'omnifunc' 'ofu' string (default: empty)
|
||||
local to buffer
|
||||
{not in Vi}
|
||||
{not available when compiled without the +eval
|
||||
or +insert_expand feature}
|
||||
This option specifies a function to be used for CTRL-X CTRL-O
|
||||
completion. |i_CTRL-X_CTRL-O|
|
||||
This option specifies a function to be used for Insert mode omni
|
||||
completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O|
|
||||
See |complete-functions| for an explanation of how the function is
|
||||
invoked and what it should return.
|
||||
|
||||
For the use of the function see 'completefunc'.
|
||||
|
||||
*'operatorfunc'* *'opfunc'*
|
||||
'operatorfunc' 'opfunc' string (default: empty)
|
||||
global
|
||||
{not in Vi}
|
||||
This option specifies a function to be called by the |g@| operator.
|
||||
See |:map-operator| for more info and an example.
|
||||
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
|
||||
*'osfiletype'* *'oft'* *E366*
|
||||
@@ -5030,7 +5103,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
feature}
|
||||
When this option is not empty, it determines the content of the ruler
|
||||
string, as displayed for the 'ruler' option.
|
||||
The format of this option, is like that of 'statusline'.
|
||||
The format of this option is like that of 'statusline'.
|
||||
The default ruler width is 17 characters. To make the ruler 15
|
||||
characters wide, put "%15(" at the start and "%)" at the end.
|
||||
Example: >
|
||||
@@ -5081,6 +5154,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
menu.vim GUI menus |menu.vim|
|
||||
plugin/ plugin scripts |write-plugin|
|
||||
print/ files for printing |postscript-print-encoding|
|
||||
spell/ spell checking files |spell|
|
||||
syntax/ syntax files |mysyntaxfile|
|
||||
tutor/ files for vimtutor |tutor|
|
||||
|
||||
@@ -5152,6 +5226,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Minimal number of lines to scroll when the cursor gets off the
|
||||
screen (e.g., with "j"). Not used for scroll commands (e.g., CTRL-E,
|
||||
CTRL-D). Useful if your terminal scrolls very slowly.
|
||||
When set to a negative number from -1 to -100 this is used as the
|
||||
percentage of the window height. Thus -50 scrolls half the window
|
||||
height.
|
||||
NOTE: This option is set to 1 when 'compatible' is set.
|
||||
|
||||
*'scrolloff'* *'so'*
|
||||
@@ -5291,6 +5368,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
winsize window sizes
|
||||
|
||||
Don't include both "curdir" and "sesdir".
|
||||
There is no option to include tab pages yet, only the current tab page
|
||||
is stored in the session. |tab-page|
|
||||
When "curdir" nor "sesdir" is included, file names are stored with
|
||||
absolute paths.
|
||||
"slash" and "unix" are useful on Windows when sharing session files
|
||||
@@ -5619,7 +5698,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The 'matchpairs' option can be used to specify the characters to show
|
||||
matches for. 'rightleft' and 'revins' are used to look for opposite
|
||||
matches.
|
||||
Note: For the use of the short form parental guidance is advised.
|
||||
Also see the matchparen plugin for highlighting the match when moving
|
||||
around |pi_paren.txt|.
|
||||
Note: Use of the short form is rated PG.
|
||||
|
||||
*'showmode'* *'smd'* *'noshowmode'* *'nosmd'*
|
||||
'showmode' 'smd' boolean (Vim default: on, Vi default: off)
|
||||
@@ -5633,6 +5714,21 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
NOTE: This option is set to the Vi default value when 'compatible' is
|
||||
set and to the Vim default value when 'compatible' is reset.
|
||||
|
||||
*'showtabline'* *'stal'*
|
||||
'showtabline' 'stal' number (default 1)
|
||||
global
|
||||
{not in Vi}
|
||||
{not available when compiled without the +windows
|
||||
feature}
|
||||
The value of this option specifies when the line with tab page labels
|
||||
will be displayed:
|
||||
0: never
|
||||
1: only if there are at least two tab pages
|
||||
2: always
|
||||
This is both for the GUI and non-GUI implementation of the tab pages
|
||||
line.
|
||||
See |tab-page| for more information about tab pages.
|
||||
|
||||
*'sidescroll'* *'ss'*
|
||||
'sidescroll' 'ss' number (default 0)
|
||||
global
|
||||
@@ -5649,13 +5745,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
{not in Vi}
|
||||
The minimal number of screen columns to keep to the left and to the
|
||||
right of the cursor if 'nowrap' is set. Setting this option to a value
|
||||
greater than 0 while having |'sidescroll'| also at a non-zero value
|
||||
makes some context visible in the line you are scrolling in
|
||||
horizontally (except at the end and beginning of the line). Setting
|
||||
this option to a large value (like 999) has the effect of keeping the
|
||||
cursor horizontally centered in the window, as long as one does not
|
||||
come too close to the beginning or end of the line.
|
||||
right of the cursor if 'nowrap' is set. Setting this option to a
|
||||
value greater than 0 while having |'sidescroll'| also at a non-zero
|
||||
value makes some context visible in the line you are scrolling in
|
||||
horizontally (except at beginning of the line). Setting this option
|
||||
to a large value (like 999) has the effect of keeping the cursor
|
||||
horizontally centered in the window, as long as one does not come too
|
||||
close to the beginning of the line.
|
||||
NOTE: This option is set to 0 when 'compatible' is set.
|
||||
|
||||
Example: Try this together with 'sidescroll' and 'listchars' as
|
||||
@@ -5710,11 +5806,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
{not in Vi}
|
||||
When on, a <Tab> in front of a line inserts blanks according to
|
||||
'shiftwidth'. 'tabstop' is used in other places. A <BS> will delete
|
||||
a 'shiftwidth' worth of space at the start of the line.
|
||||
When off a <Tab> always inserts blanks according to 'tabstop'.
|
||||
'shiftwidth' is only used for shifting text left or right
|
||||
|shift-left-right|.
|
||||
'shiftwidth'. 'tabstop' or 'softtabstop' is used in other places. A
|
||||
<BS> will delete a 'shiftwidth' worth of space at the start of the
|
||||
line.
|
||||
When off, a <Tab> always inserts blanks according to 'tabstop' or
|
||||
'softtabstop'. 'shiftwidth' is only used for shifting text left or
|
||||
right |shift-left-right|.
|
||||
What gets inserted (a Tab or spaces) depends on the 'expandtab'
|
||||
option. Also see |ins-expandtab|. When 'expandtab' is not set, the
|
||||
number of spaces is minimized by using <Tab>s.
|
||||
@@ -5819,9 +5916,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
files twice.
|
||||
How the related spell files are found is explained here: |spell-load|.
|
||||
|
||||
If the |spellfile.vim| plugin is active and you use a language name
|
||||
for which Vim cannot find the .spl file in 'runtimepath' the plugin
|
||||
will ask you if you want to download the file.
|
||||
|
||||
After this option has been set successfully, Vim will source the files
|
||||
"spell/LANG.vim" in 'runtimepath'. "LANG" is the value of 'spelllang'
|
||||
up to the first comma, dot or underscore. See |set-spc-auto|.
|
||||
up to the first comma, dot or underscore.
|
||||
Also see |set-spc-auto|.
|
||||
|
||||
|
||||
*'spellsuggest'* *'sps'*
|
||||
@@ -5830,7 +5932,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not in Vi}
|
||||
{not available when compiled without the |+syntax|
|
||||
feature}
|
||||
Methods used for spelling suggestions. Both for the |z?| command and
|
||||
Methods used for spelling suggestions. Both for the |z=| command and
|
||||
the |spellsuggest()| function. This is a comma-separated list of
|
||||
items:
|
||||
|
||||
@@ -5849,7 +5951,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
character inserts/deletes/swaps. Works well for
|
||||
simple typing mistakes.
|
||||
|
||||
{number} The maximum number of suggestions listed for |z?|.
|
||||
{number} The maximum number of suggestions listed for |z=|.
|
||||
Not used for |spellsuggest()|. The number of
|
||||
suggestions is never more than the value of 'lines'
|
||||
minus two.
|
||||
@@ -5871,7 +5973,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Lists, each with a suggestion and a score.
|
||||
Example:
|
||||
[['the', 33], ['that', 44]]
|
||||
Set 'verbose' and use |z?| to see the scores that the
|
||||
Set 'verbose' and use |z=| to see the scores that the
|
||||
internal methods use. A lower score is better.
|
||||
This may invoke |spellsuggest()| if you temporarily
|
||||
set 'spellsuggest' to exclude the "expr:" part.
|
||||
@@ -5934,6 +6036,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
All fields except the {item} is optional. A single percent sign can
|
||||
be given as "%%". Up to 80 items can be specified.
|
||||
|
||||
When the option starts with "%!" then it is used as an expression,
|
||||
evaluated and the result is used as the option value. Example: >
|
||||
:set statusline=%!MyStatusLine()
|
||||
< The result can contain %{} items that will be evaluated too.
|
||||
|
||||
When there is error while evaluating the option then it will be made
|
||||
empty to avoid further errors. Otherwise screen updating would loop.
|
||||
|
||||
Note that the only effect of 'ruler' when this option is set (and
|
||||
'laststatus' is 2) is controlling the output of |CTRL-G|.
|
||||
|
||||
@@ -5992,14 +6102,24 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
percentage described for 'ruler'. Always 3 in length.
|
||||
a S Argument list status as in default title. ({current} of {max})
|
||||
Empty if the argument file count is zero or one.
|
||||
{ NF Evaluate expression between '{' and '}' and substitute result.
|
||||
{ NF Evaluate expression between '%{' and '}' and substitute result.
|
||||
Note that there is no '%' before the closing '}'.
|
||||
( - Start of item group. Can be used for setting the width and
|
||||
alignment of a section. Must be followed by %) somewhere.
|
||||
) - End of item group. No width fields allowed.
|
||||
T N For 'tabline': start of tab page N label. Use %T after the last
|
||||
label. This information is used for mouse clicks.
|
||||
X N For 'tabline': start of close tab N label. Use %X after the
|
||||
label, e.g.: %3Xclose%X. Use %999X for a "close current tab"
|
||||
mark. This information is used for mouse clicks.
|
||||
< - Where to truncate line if too long. Default is at the start.
|
||||
No width fields allowed.
|
||||
= - Separation point between left and right aligned items.
|
||||
No width fields allowed.
|
||||
# - Set highlight group. The name must follow and then a # again.
|
||||
Thus use %#HLname# for highlight group HLname. The same
|
||||
highlighting is used, also for the statusline of non-current
|
||||
windows.
|
||||
* - Set highlight group to User{N}, where {N} is taken from the
|
||||
minwid field, e.g. %1*. Restore normal highlight with %* or %0*.
|
||||
The difference between User{N} and StatusLine will be applied
|
||||
@@ -6026,7 +6146,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
temporarily to that of the window (and buffer) whose statusline is
|
||||
currently being drawn. The expression will evaluate in this context.
|
||||
The variable "actual_curbuf" is set to the 'bufnr()' number of the
|
||||
real current buffer. The expression is evaluated in the |sandbox|.
|
||||
real current buffer.
|
||||
|
||||
The 'statusline' option may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|
||||
It is not allowed to change text or jump to another window while
|
||||
evaluating 'statusline' |textlock|.
|
||||
|
||||
If the statusline is not updated when you want it (e.g., after setting
|
||||
a variable that's used in an expression), you can force an update by
|
||||
@@ -6174,7 +6300,41 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'S' flag in 'cpoptions'.
|
||||
Only normal file name characters can be used, "/\*?[|<>" are illegal.
|
||||
|
||||
*'tabstop'* *'ts'*
|
||||
*'tabline'* *'tal'*
|
||||
'tabline' 'tal' string (default empty)
|
||||
global
|
||||
{not in Vi}
|
||||
{not available when compiled without the +windows
|
||||
feature}
|
||||
When nonempty, this option determines the content of the tab pages
|
||||
line at the top of the Vim window. When empty Vim will use a default
|
||||
tab pages line. See |setting-tabline| for more info.
|
||||
|
||||
The tab pages line only appears as specified with the 'showtabline'
|
||||
option and only when there is no GUI tab line. When 'e' is in
|
||||
'guioptions' and the GUI supports a tab line 'guitablabel' is used
|
||||
instead.
|
||||
|
||||
The value is evaluated like with 'statusline'. You can use
|
||||
|tabpagenr()|, |tabpagewinnr()| and |tabpagebuflist()| to figure out
|
||||
the text to be displayed. Use "%1T" for the first label, "%2T" for
|
||||
the second one, etc. Use "%X" items for closing labels.
|
||||
|
||||
Keep in mind that only one of the tab pages is the current one, others
|
||||
are invisible and you can't jump to their windows.
|
||||
|
||||
|
||||
*'tabpagemax'* *'tpm'*
|
||||
'tabpagemax' 'tpm' number (default 10)
|
||||
global
|
||||
{not in Vi}
|
||||
{not available when compiled without the +windows
|
||||
feature}
|
||||
Maximum number of tab pages to be opened by the |-p| command line
|
||||
argument or the ":tab all" command. |tabpage|
|
||||
|
||||
|
||||
*'tabstop'* *'ts'*
|
||||
'tabstop' 'ts' number (default 8)
|
||||
local to buffer
|
||||
Number of spaces that a <Tab> in the file counts for. Also see
|
||||
@@ -6275,6 +6435,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
"*", "**" and other wildcards can be used to search for tags files in
|
||||
a directory tree. See |file-searching|. {not available when compiled
|
||||
without the |+path_extra| feature}
|
||||
The |tagfiles()| function can be used to get a list of the file names
|
||||
actually used.
|
||||
If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag
|
||||
files are also supported. They are automatically recognized. The
|
||||
default value becomes "./tags,./TAGS,tags,TAGS", unless case
|
||||
@@ -6982,7 +7144,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'weirdinvert' 'wiv' boolean (default off)
|
||||
global
|
||||
{not in Vi}
|
||||
This option has the same effect as the 't_xs' termcap option.
|
||||
This option has the same effect as the 't_xs' terminal option.
|
||||
It is provided for backwards compatibility with version 4.x.
|
||||
Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and
|
||||
vice versa. Has no effect when the GUI is running.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*os_dos.txt* For Vim version 7.0aa. Last change: 2003 Dec 20
|
||||
*os_dos.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -126,8 +126,8 @@ text. For example, to get grey text on a blue background: >
|
||||
See |highlight-groups| for other groups that are available.
|
||||
|
||||
A DOS console does not support attributes like bold and underlining. You can
|
||||
set the color used in five modes with nine termcap options. Note that this is
|
||||
not necessary since you can set the color directly with the ":highlight"
|
||||
set the color used in five modes with nine terminal options. Note that this
|
||||
is not necessary since you can set the color directly with the ":highlight"
|
||||
command; these options are for backward compatibility with older Vim versions.
|
||||
The |'highlight'| option specifies which of the five modes is used for which
|
||||
action. >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*os_vms.txt* For Vim version 7.0aa. Last change: 2005 Jul 12
|
||||
*os_vms.txt* For Vim version 7.0aa. Last change: 2006 Mar 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL
|
||||
@@ -56,11 +56,14 @@ To use the precompiled binary version, you need one of these archives:
|
||||
vim-XX-exe-vax-gui.zip VAX GUI executables
|
||||
vim-XX-exe-vax-term.zip VAX console executables
|
||||
|
||||
and of course
|
||||
and of course (optional)
|
||||
vim-XX-runtime.zip runtime files
|
||||
|
||||
The binary archives contain: vim.exe, ctags.exe, xxd.exe files.
|
||||
|
||||
For GTK executables you will need GTKLIB that is available for
|
||||
Alpha and IA64 platform.
|
||||
|
||||
==============================================================================
|
||||
|
||||
3. Compiling *vms-compiling*
|
||||
@@ -121,10 +124,10 @@ Vim uses a special directory structure to hold the document and runtime files:
|
||||
|- vim57
|
||||
|----- doc
|
||||
|----- syntax
|
||||
|- vim60
|
||||
|- vim62
|
||||
|----- doc
|
||||
|----- syntax
|
||||
|- vim61
|
||||
|- vim64
|
||||
|----- doc
|
||||
|----- syntax
|
||||
vimrc (system rc files)
|
||||
@@ -239,6 +242,17 @@ and to the SYS$STARTUP:SYLOGIN.COM >
|
||||
|
||||
It will set up a normal Vim work environment for every user on the system.
|
||||
|
||||
IMPORTANT: Vim on OpenVMS (and on other case insensitive system) command line
|
||||
parameters are assumed to be lowecase. In order to indicate that a command
|
||||
line parameter is uppercase "/" sign must be used.
|
||||
|
||||
Examples:
|
||||
>
|
||||
vim -R filename ! means: -r List swap files and exit
|
||||
vim -/r filename ! means: -R Readonly mode (like "view")
|
||||
vim -u <vimrc> ! means: -u Use <vimrc> instead of any .vimrc
|
||||
vim -/u <gvimrc> ! means: -U Use <gvimrc> instead of any .gvimrc
|
||||
|
||||
==============================================================================
|
||||
|
||||
7. GUI mode questions *vms-gui*
|
||||
@@ -653,7 +667,10 @@ start it with: >
|
||||
|
||||
9. VMS related changes *vms-changes*
|
||||
|
||||
Version 7.0
|
||||
Version 7
|
||||
- Improved low level char input (affects just console mode)
|
||||
|
||||
Version 6.4 (2005 Oct 15)
|
||||
- GTKLIB and Vim build on IA64
|
||||
- colors in terminal mode
|
||||
- syntax highlighting in terminal mode
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 7.0aa. Last change: 2005 Aug 18
|
||||
*pattern.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -117,6 +117,14 @@ gD Goto global Declaration. When the cursor is on a
|
||||
like "gd", except that the search for the keyword
|
||||
always starts in line 1. {not in Vi}
|
||||
|
||||
*1gd*
|
||||
1gd Like "gd", but ignore matches inside a {} block that
|
||||
ends before the cursor position. {not in Vi}
|
||||
|
||||
*1gD*
|
||||
1gD Like "gD", but ignore matches inside a {} block that
|
||||
ends before the cursor position. {not in Vi}
|
||||
|
||||
*CTRL-C*
|
||||
CTRL-C Interrupt current (search) command. Use CTRL-Break on
|
||||
MS-DOS |dos-CTRL-Break|.
|
||||
@@ -153,7 +161,7 @@ The offset gives the cursor position relative to the found match:
|
||||
s[-num] [num] characters to the left of the start of the match
|
||||
b[+num] [num] identical to s[+num] above (mnemonic: begin)
|
||||
b[-num] [num] identical to s[-num] above (mnemonic: begin)
|
||||
;{pattern} perform another searcn, see |//;|
|
||||
;{pattern} perform another search, see |//;|
|
||||
|
||||
If a '-' or '+' is given but [num] is omitted, a count of one will be used.
|
||||
When including an offset with 'e', the search becomes inclusive (the
|
||||
@@ -248,9 +256,13 @@ switched off by setting the 's' flag in the 'shortmess' option. The highlight
|
||||
method 'w' is used for this message (default: standout).
|
||||
|
||||
*search-range*
|
||||
You cannot limit the search command "/" to a certain range of lines. A trick
|
||||
to do this anyway is to use the ":substitute" command with the 'c' flag.
|
||||
Example: >
|
||||
You can limit the search command "/" to a certain range of lines by including
|
||||
\%>l items. For example, to match the word "limit" below line 199 and above
|
||||
line 300: >
|
||||
/\%>199l\%<300llimit
|
||||
Also see |/\%>l|.
|
||||
|
||||
Another way is to use the ":substitute" command with the 'c' flag. Example: >
|
||||
:.,300s/Pattern//gc
|
||||
This command will search from the cursor position until line 300 for
|
||||
"Pattern". At the match, you will be asked to type a character. Type 'q' to
|
||||
@@ -382,7 +394,9 @@ More explanation and examples below, follow the links.
|
||||
|/\ze| \ze \ze anything, sets end of match
|
||||
|/\%^| \%^ \%^ beginning of file |/zero-width| *E71*
|
||||
|/\%$| \%$ \%$ end of file |/zero-width|
|
||||
|/\%V| \%V \%V inside Visual area |/zero-width|
|
||||
|/\%#| \%# \%# cursor position |/zero-width|
|
||||
|/\%'m| \%'m \%'m mark m position |/zero-width|
|
||||
|/\%l| \%23l \%23l in line 23 |/zero-width|
|
||||
|/\%c| \%23c \%23c in column 23 |/zero-width|
|
||||
|/\%v| \%23v \%23v in virtual column 23 |/zero-width|
|
||||
@@ -776,6 +790,11 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
|
||||
position after the first "VIM".
|
||||
Searching from the end of the file backwards is easier!
|
||||
|
||||
*/\%V*
|
||||
\%V Match inside the Visual area. When Visual mode has already been
|
||||
stopped match in the area that |gv| would reselect.
|
||||
Only works for the current buffer.
|
||||
|
||||
*/\%#* *cursor-position*
|
||||
\%# Matches with the cursor position. Only works when matching in a
|
||||
buffer displayed in a window. {not in Vi}
|
||||
@@ -790,10 +809,24 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
|
||||
< When 'hlsearch' is set and you move the cursor around and make changes
|
||||
this will clearly show when the match is updated or not.
|
||||
|
||||
*/\%'m* */\%<'m* */\%>'m*
|
||||
\%'m Matches with the position of mark m.
|
||||
\%<'m Matches before the position of mark m.
|
||||
\%>'m Matches after the position of mark m.
|
||||
Example, to highlight the text from mark 's to 'e: >
|
||||
/.\%>'s.*\%<'e..
|
||||
< Note that two dots are required to include mark 'e in the match. That
|
||||
is because "\%<'e" matches at the character before the 'e mark, and
|
||||
since it's a |/zero-width| match it doesn't include that character.
|
||||
{not in Vi}
|
||||
WARNING: When the mark is moved after the pattern was used, the result
|
||||
becomes invalid. Vim doesn't automatically update the matches.
|
||||
Similar to moving the cursor for "\%#" |/\%#|.
|
||||
|
||||
*/\%l* */\%>l* */\%<l*
|
||||
\%23l Matches in a specific line.
|
||||
\%<23l Matches above a specific line.
|
||||
\%>23l Matches below a specific line.
|
||||
\%<23l Matches above a specific line (lower line number).
|
||||
\%>23l Matches below a specific line (higher line number).
|
||||
These three can be used to match specific lines in a buffer. The "23"
|
||||
can be any line number. The first line is 1. {not in Vi}
|
||||
WARNING: When inserting or deleting lines Vim does not automatically
|
||||
@@ -1158,14 +1191,23 @@ Finally, these constructs are unique to Perl:
|
||||
< Instead of // any character can be used to mark the start and
|
||||
end of the {pattern}. Watch out for using special characters,
|
||||
such as '"' and '|'.
|
||||
|
||||
{group} must exist at the moment this command is executed.
|
||||
The match overrides the 'hlsearch' highlighting.
|
||||
'ignorecase' does not apply, use |/\c| in the pattern to
|
||||
ignore case. Otherwise case is not ignored.
|
||||
|
||||
The {group} highlighting still applies when a character is
|
||||
to be highlighted for 'hlsearch'.
|
||||
|
||||
Note that highlighting the last used search pattern with
|
||||
'hlsearch' is used in all windows, while the pattern defined
|
||||
with ":match" only exists in the current window. It is kept
|
||||
when switching to another buffer.
|
||||
|
||||
The |matchparen| plugin uses match highlighting, thus will
|
||||
disable your ":match" command as soon as you move to a paren.
|
||||
|
||||
'ignorecase' does not apply, use |/\c| in the pattern to
|
||||
ignore case. Otherwise case is not ignored.
|
||||
|
||||
Another example, which highlights all characters in virtual
|
||||
column 72 and more: >
|
||||
:highlight rightMargin term=bold ctermfg=blue guifg=blue
|
||||
@@ -1180,4 +1222,20 @@ Finally, these constructs are unique to Perl:
|
||||
:mat[ch] none
|
||||
Clear a previously defined match pattern.
|
||||
|
||||
|
||||
:2mat[ch] {group} /{pattern}/
|
||||
:2mat[ch]
|
||||
:2mat[ch] none
|
||||
:3mat[ch] {group} /{pattern}/
|
||||
:3mat[ch]
|
||||
:3mat[ch] none
|
||||
Just like |:match| above, but set a separate match. Thus
|
||||
there can be three matches active at the same time. The match
|
||||
with the lowest number has priority if several match at the
|
||||
same position.
|
||||
The ":3match" command is used by the |matchparen| plugin. You
|
||||
are suggested to use ":match" for manual matching and
|
||||
":2match" for another plugin.
|
||||
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
42
runtime/doc/pi_paren.txt
Normal file
42
runtime/doc/pi_paren.txt
Normal file
@@ -0,0 +1,42 @@
|
||||
*pi_paren.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
Highlighting matching parens *matchparen*
|
||||
|
||||
The functionality mentioned here is a |standard-plugin|.
|
||||
This plugin is only available if 'compatible' is not set.
|
||||
|
||||
You can avoid loading this plugin by setting the "loaded_matchparen" variable: >
|
||||
:let loaded_matchparen = 1
|
||||
|
||||
The plugin installs CursorMoved autocommands to redefine the match
|
||||
highlighting.
|
||||
|
||||
To disable the plugin after it was loaded use this command: >
|
||||
|
||||
:NoMatchParen
|
||||
|
||||
And to enable it again: >
|
||||
|
||||
:DoMatchParen
|
||||
|
||||
The highlighting used is MatchParen. You can specify different colors with
|
||||
the ":highlight" command. Example: >
|
||||
|
||||
:hi MatchParen ctermbg=blue guibg=lightblue
|
||||
|
||||
The characters to be matched come from the 'matchpairs' option. You can
|
||||
change the value to highlight different matches. Note that not everything is
|
||||
possible. For example, you can't highlight single or double quotes, because
|
||||
the start and end are equal.
|
||||
|
||||
The syntax highlighting attributes are used. When the cursor currently is not
|
||||
in a string or comment syntax item, then matches inside string and comment
|
||||
syntax items are ignored. Any syntax items with "string" or "comment"
|
||||
somewhere in their name are considered string or comment items.
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_spec.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
|
||||
*pi_spec.txt* For Vim version 7.0aa. Last change: 2005 Oct 03
|
||||
|
||||
by Gustavo Niemeyer ~
|
||||
|
||||
@@ -26,13 +26,13 @@ your maplocalleader key (default is '\') plus 'c'. If you do not have
|
||||
|spec_chglog_format| set, the plugin will ask you for an email address
|
||||
to use in this edit session.
|
||||
|
||||
Everytime you run the plugin, it will check to see if the last entry
|
||||
in the changelog has been written today and by you. If it's the entry
|
||||
mathes, it will just insert a new changelog item, otherwise it will
|
||||
create a new changelog entry. If you are running with
|
||||
|spec_chglog_release_info| enabled, it will also check if the name, version
|
||||
and release matches. The plugin is smart enough to ask you if it should
|
||||
update the package release, if you have not done so.
|
||||
Every time you run the plugin, it will check to see if the last entry in the
|
||||
changelog has been written today and by you. If the entry matches, it will
|
||||
just insert a new changelog item, otherwise it will create a new changelog
|
||||
entry. If you are running with |spec_chglog_release_info| enabled, it will
|
||||
also check if the name, version and release matches. The plugin is smart
|
||||
enough to ask you if it should update the package release, if you have not
|
||||
done so.
|
||||
|
||||
Setting a map *spec-setting-a-map*
|
||||
-------------
|
||||
|
||||
40
runtime/doc/pi_tar.txt
Normal file
40
runtime/doc/pi_tar.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
*tar.txt* Tar File Interface Dec 21, 2005
|
||||
|
||||
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
Copyright: The GPL (gnu public license) applies to *tar-copyright*
|
||||
tarPlugin.vim, and pi_tar.txt.
|
||||
No warranty, express or implied. Use At-Your-Own-Risk.
|
||||
|
||||
==============================================================================
|
||||
1. Contents *tar* *tar-contents*
|
||||
1. Contents..................................................|tar-contents|
|
||||
2. Usage.....................................................|tar-usage|
|
||||
3. History...................................................|tar-history|
|
||||
|
||||
==============================================================================
|
||||
2. Usage *tar-usage* *tar-manual*
|
||||
|
||||
When one edits a *.tar file, this plugin will handle displaying a
|
||||
contents page. Select a file to edit by moving the cursor atop
|
||||
the desired file, then hit the <return> key. After editing, one may
|
||||
also write to the file. Currently, one may not make a new file in
|
||||
tar archives via the plugin.
|
||||
|
||||
==============================================================================
|
||||
3. History *tar-history*
|
||||
v6 Dec 21, 2005 * writing to files not in directories caused problems -
|
||||
fixed (pointed out by Christian Robinson)
|
||||
v5 Nov 22, 2005 * report option workaround installed
|
||||
v3 Sep 16, 2005 * handles writing files in an archive back to the
|
||||
archive
|
||||
Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
|
||||
Oct 18, 2005 * handles writing to compressed archives
|
||||
Nov 03, 2005 * handles writing tarfiles across a network using
|
||||
netrw#NetWrite()
|
||||
v2 * converted to use Vim7's new autoload feature by
|
||||
Bram Moolenaar
|
||||
v1 (original) * Michael Toren (see http://michael.toren.net/code/)
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help
|
||||
44
runtime/doc/pi_zip.txt
Normal file
44
runtime/doc/pi_zip.txt
Normal file
@@ -0,0 +1,44 @@
|
||||
*zip.txt* Zip File Interface Nov 28, 2005
|
||||
|
||||
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 *zip-copyright*
|
||||
Permission is hereby granted to use and distribute this code,
|
||||
with or without modifications, provided that this copyright
|
||||
notice is copied with it. Like anything else that's free,
|
||||
zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is*
|
||||
and it comes with no warranty of any kind, either expressed or
|
||||
implied. By using this plugin, you agree that in no event will
|
||||
the copyright holder be liable for any damages resulting from
|
||||
the use of this software.
|
||||
|
||||
==============================================================================
|
||||
1. Contents *zip* *zip-contents*
|
||||
1. Contents..................................................|zip-contents|
|
||||
2. Usage.....................................................|zip-usage|
|
||||
3. History...................................................|zip-history|
|
||||
|
||||
==============================================================================
|
||||
2. Usage *zip-usage* *zip-manual*
|
||||
|
||||
When one edits a *.zip file, this plugin will handle displaying a
|
||||
contents page. Select a file to edit by moving the cursor atop
|
||||
the desired file, then hit the <return> key. After editing, one may
|
||||
also write to the file. Currently, one may not make a new file in
|
||||
zip archives via the plugin.
|
||||
|
||||
==============================================================================
|
||||
3. History *zip-history*
|
||||
v6 Dec 21, 2005 * writing to files not in directories caused problems -
|
||||
fixed (pointed out by Christian Robinson)
|
||||
v5 Nov 22, 2005 * report option workaround installed
|
||||
v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
|
||||
v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt)
|
||||
* began testing under Windows; works thus far
|
||||
* filetype detection fixed
|
||||
Nov 03, 2005 * handles writing zipfiles across a network using
|
||||
netrw#NetWrite()
|
||||
v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 7.0aa. Last change: 2005 Aug 31
|
||||
*quickfix.txt* For Vim version 7.0aa. Last change: 2006 Feb 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -42,7 +42,19 @@ easy way to do this is with the |:make| command (see below). The
|
||||
'errorformat' option should be set to match the error messages from your
|
||||
compiler (see |errorformat| below).
|
||||
|
||||
The following quickfix commands can be used:
|
||||
*location-list* *E776*
|
||||
A location list is similar to a quickfix list and contains a list of positions
|
||||
in files. A location list is associated with a window and each window can
|
||||
have a separate location list. A location list can be associated with only
|
||||
one window. The location list is independent of the quickfix list.
|
||||
|
||||
When a window with a location list is split, the new window gets a copy of the
|
||||
location list. When there are no references to a location list, the location
|
||||
list is destroyed.
|
||||
|
||||
The following quickfix commands can be used. The location list commands are
|
||||
similar to the quickfix commands, replacing the 'c' prefix in the quickfix
|
||||
command with 'l'.
|
||||
|
||||
*:cc*
|
||||
:cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
|
||||
@@ -56,18 +68,32 @@ The following quickfix commands can be used:
|
||||
The 'switchbuf' settings are respected when jumping
|
||||
to a buffer.
|
||||
|
||||
*:ll*
|
||||
:ll[!] [nr] Same as ":cc", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cn* *:cnext* *E553*
|
||||
:[count]cn[ext][!] Display the [count] next error in the list that
|
||||
includes a file name. If there are no file names at
|
||||
all, go to the [count] next error. See |:cc| for
|
||||
[!] and 'switchbuf'.
|
||||
|
||||
*:lne* *:lnext*
|
||||
:[count]lne[xt][!] Same as ":cnext", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
:[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext*
|
||||
:[count]cp[revious][!] Display the [count] previous error in the list that
|
||||
includes a file name. If there are no file names at
|
||||
all, go to the [count] previous error. See |:cc| for
|
||||
[!] and 'switchbuf'.
|
||||
|
||||
|
||||
:[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext*
|
||||
:[count]lp[revious][!] Same as ":cNext" and ":cprevious", except the location
|
||||
list for the current window is used instead of the
|
||||
quickfix list.
|
||||
|
||||
*:cnf* *:cnfile*
|
||||
:[count]cnf[ile][!] Display the first error in the [count] next file in
|
||||
the list that includes a file name. If there are no
|
||||
@@ -75,6 +101,10 @@ The following quickfix commands can be used:
|
||||
the [count] next error. See |:cc| for [!] and
|
||||
'switchbuf'.
|
||||
|
||||
*:lnf* *:lnfile*
|
||||
:[count]lnf[ile][!] Same as ":cnfile", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
:[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile*
|
||||
:[count]cpf[ile][!] Display the last error in the [count] previous file in
|
||||
the list that includes a file name. If there are no
|
||||
@@ -82,17 +112,34 @@ The following quickfix commands can be used:
|
||||
the [count] previous error. See |:cc| for [!] and
|
||||
'switchbuf'.
|
||||
|
||||
|
||||
:[count]lNf[ile][!] *:lpf* *:lpfile* *:lNf* *:lNfile*
|
||||
:[count]lpf[ile][!] Same as ":cNfile" and ":cpfile", except the location
|
||||
list for the current window is used instead of the
|
||||
quickfix list.
|
||||
|
||||
*:crewind* *:cr*
|
||||
:cr[ewind][!] [nr] Display error [nr]. If [nr] is omitted, the FIRST
|
||||
error is displayed. See |:cc|.
|
||||
|
||||
*:lrewind* *:lr*
|
||||
:lr[ewind][!] [nr] Same as ":crewind", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cfirst* *:cfir*
|
||||
:cfir[st][!] [nr] Same as ":crewind".
|
||||
|
||||
*:lfirst* *:lfir*
|
||||
:lfir[st][!] [nr] Same as ":lrewind".
|
||||
|
||||
*:clast* *:cla*
|
||||
:cla[st][!] [nr] Display error [nr]. If [nr] is omitted, the LAST
|
||||
error is displayed. See |:cc|.
|
||||
|
||||
*:llast* *:lla*
|
||||
:lla[st][!] [nr] Same as ":clast", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cq* *:cquit*
|
||||
:cq[uit] Quit Vim with an error code, so that the compiler
|
||||
will not compile the same file again.
|
||||
@@ -105,16 +152,31 @@ The following quickfix commands can be used:
|
||||
name of the errorfile, the 'errorfile' option will
|
||||
be set to [errorfile]. See |:cc| for [!].
|
||||
|
||||
*:cg* *:cgetfile*
|
||||
:cg[etfile][!] [errorfile]
|
||||
*:lf* *:lfile*
|
||||
:lf[ile][!] [errorfile] Same as ":cfile", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
You can not use the -q command-line option to set
|
||||
the location list.
|
||||
|
||||
|
||||
:cg[etfile][!] [errorfile] *:cg* *:cgetfile*
|
||||
Read the error file. Just like ":cfile" but don't
|
||||
jump to the first error.
|
||||
|
||||
*:cad* *:caddfile*
|
||||
:cad[dfile] [errorfile] Read the error file and add the errors from the
|
||||
|
||||
:lg[etfile][!] [errorfile] *:lg* *:lgetfile*
|
||||
Same as ":cgetfile", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:caddf* *:caddfile*
|
||||
:caddf[ile] [errorfile] Read the error file and add the errors from the
|
||||
errorfile to the current quickfix list. If a quickfix
|
||||
list is not present, then a new list is created.
|
||||
|
||||
*:laddf* *:laddfile*
|
||||
:laddf[ile] [errorfile] Same as ":caddfile", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cb* *:cbuffer* *E681*
|
||||
:cb[uffer] [bufnr] Read the error list from the current buffer.
|
||||
When [bufnr] is given it must be the number of a
|
||||
@@ -123,19 +185,52 @@ The following quickfix commands can be used:
|
||||
A range can be specified for the lines to be used.
|
||||
Otherwise all lines in the buffer are used.
|
||||
|
||||
*:cex* *:cexpr*
|
||||
:cex[pr][!] {expr} Create a quickfix list using the result of {expr}.
|
||||
If {expr} is a String, then each new-line terminated
|
||||
line in the String is processed using 'errorformat'
|
||||
and the result is added to the quickfix list.
|
||||
If {expr} is a List, then each String item in the list
|
||||
is processed and added to the quickfix list.
|
||||
Non String items in the List are ignored. See |:cc|
|
||||
*:lb* *:lbuffer*
|
||||
:lb[uffer] [bufnr] Same as ":cbuffer", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:caddb* *:caddbuffer*
|
||||
:caddb[uffer] [bufnr] Read the error list from the current buffer and add
|
||||
the errors to the current quickfix list. If a
|
||||
quickfix list is not present, then a new list is
|
||||
created. Otherwise, same as ":cbuffer".
|
||||
|
||||
*:laddb* *:laddbuffer*
|
||||
:laddb[uffer] [bufnr] Same as ":caddbuffer", except the location list for
|
||||
the current window is used instead of the quickfix
|
||||
list.
|
||||
|
||||
*:cex* *:cexpr* *E777*
|
||||
:cex[pr][!] {expr} Create a quickfix list using the result of {expr} and
|
||||
jump to the first error. If {expr} is a String, then
|
||||
each new-line terminated line in the String is
|
||||
processed using 'errorformat' and the result is added
|
||||
to the quickfix list. If {expr} is a List, then each
|
||||
String item in the list is processed and added to the
|
||||
quickfix list. Non String items in the List are
|
||||
ignored. See |:cc|
|
||||
for [!].
|
||||
Examples: >
|
||||
:cexpr system('grep -n xyz *')
|
||||
:cexpr getline(1, '$')
|
||||
<
|
||||
*:lex* *:lexpr*
|
||||
:lex[pr][!] {expr} Same as ":cexpr", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cad* *:caddexpr*
|
||||
:cad[dexpr][!] {expr} Evaluate {expr} and add the resulting lines to the
|
||||
current quickfix list. If a quickfix list is not
|
||||
present, then a new list is created. The current
|
||||
cursor position will not be changed. See |:cexpr| for
|
||||
more information.
|
||||
Example: >
|
||||
:g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".")
|
||||
<
|
||||
*:lad* *:laddexpr*
|
||||
:lad[dexpr][!] {expr} Same as ":caddexpr", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:cl* *:clist*
|
||||
:cl[ist] [from] [, [to]]
|
||||
List all errors that are valid |quickfix-valid|.
|
||||
@@ -148,6 +243,15 @@ The following quickfix commands can be used:
|
||||
:cl[ist]! [from] [, [to]]
|
||||
List all errors.
|
||||
|
||||
*:lli* *:llist*
|
||||
:lli[st] [from] [, [to]]
|
||||
Same as ":clist", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
:lli[st]! [from] [, [to]]
|
||||
List all the entries in the location list for the
|
||||
current window.
|
||||
|
||||
If you insert or delete lines, mostly the correct error location is still
|
||||
found because hidden marks are used. Sometimes, when the mark has been
|
||||
deleted for some reason, the message "line changed" is shown to warn you that
|
||||
@@ -172,14 +276,28 @@ on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details.
|
||||
the current window. It is not possible to open a
|
||||
second quickfix window.
|
||||
|
||||
*:lop* *:lopen*
|
||||
:lop[en] [height] Open a window to show the location list for the
|
||||
current window. Works only when the location list for
|
||||
the current window is present. You can have more than
|
||||
one location window opened at a time. Otherwise, it
|
||||
acts the same as ":copen".
|
||||
|
||||
*:ccl* *:cclose*
|
||||
:ccl[ose] Close the quickfix window.
|
||||
|
||||
*:lcl* *:lclose*
|
||||
:lcl[ose] Close the window showing the location list for the
|
||||
current window.
|
||||
|
||||
*:cw* *:cwindow*
|
||||
:cw[indow] [height] Open the quickfix window when there are recognized
|
||||
errors. If the window is already open and there are
|
||||
no recognized errors, close the window.
|
||||
|
||||
*:lw* *:lwindow*
|
||||
:lw[indow] [height] Same as ":cwindow", except use the window showing the
|
||||
location list for the current window.
|
||||
|
||||
Normally the quickfix window is at the bottom of the screen. If there are
|
||||
vertical splits, it's at the bottom of the rightmost column of windows. To
|
||||
@@ -204,14 +322,17 @@ You can use CTRL-W <Enter> to open a new window and jump to the error there.
|
||||
|
||||
When the quickfix window has been filled, two autocommand events are
|
||||
triggered. First the 'filetype' option is set to "qf", which triggers the
|
||||
FileType event. Then the BufReadPost event is triggered. This can be used to
|
||||
perform some action on the listed errors. Example: >
|
||||
au BufReadPost quickfix setlocal nomodifiable
|
||||
\ | silent g/^/s//\=line(".")." "/
|
||||
\ | setlocal modifiable
|
||||
FileType event. Then the BufReadPost event is triggered, using "quickfix" for
|
||||
the buffer name. This can be used to perform some action on the listed
|
||||
errors. Example: >
|
||||
au BufReadPost quickfix setlocal modifiable
|
||||
\ | silent exe 'g/^/s//\=line(".")." "/'
|
||||
\ | setlocal nomodifiable
|
||||
This prepends the line number to each line. Note the use of "\=" in the
|
||||
substitute string of the ":s" command, which is used to evaluate an
|
||||
expression.
|
||||
The BufWinEnter event is also triggered, again using "quickfix" for the buffer
|
||||
name.
|
||||
|
||||
Note: Making changes in the quickfix window has no effect on the list of
|
||||
errors. 'modifiable' is off to avoid making changes. If you delete or insert
|
||||
@@ -220,6 +341,29 @@ If you really want to do this, you could write the contents of the quickfix
|
||||
window to a file and use ":cfile" to have it parsed and used as the new error
|
||||
list.
|
||||
|
||||
*location-list-window*
|
||||
The location list window displays the entries in a location list. When you
|
||||
open a location list window, it is created below the current window and
|
||||
displays the location list for the current window. The location list window
|
||||
is similar to the quickfix window, except that you can have more than one
|
||||
location list window open at a time. When you use a location list command in
|
||||
this window, the displayed location list is used.
|
||||
|
||||
When you select a file from the location list window, the following steps are
|
||||
used to find a window to edit the file:
|
||||
|
||||
1. If a window with the location list displayed in the location list window is
|
||||
present, then the file is opened in that window.
|
||||
2. If the above step fails and if the file is already opened in another
|
||||
window, then that window is used.
|
||||
3. If the above step fails then an existing window showing a buffer with
|
||||
'buftype' not set is used.
|
||||
4. If the above step fails, then the file is edited in a new window.
|
||||
|
||||
In all of the above cases, if the location list for the selected window is not
|
||||
yet set, then it is set to the location list displayed in the location list
|
||||
window.
|
||||
|
||||
=============================================================================
|
||||
3. Using more than one list of errors *quickfix-error-lists*
|
||||
|
||||
@@ -233,11 +377,19 @@ lists. They set one of the existing error lists as the current one.
|
||||
this [count] times. When already at the oldest error
|
||||
list, an error message is given.
|
||||
|
||||
*:lolder* *:lol*
|
||||
:lol[der] [count] Same as ":colder", except use the location list for
|
||||
the current window instead of the quickfix list.
|
||||
|
||||
*:cnewer* *:cnew* *E381*
|
||||
:cnew[er] [count] Go to newer error list. When [count] is given, do
|
||||
this [count] times. When already at the newest error
|
||||
list, an error message is given.
|
||||
|
||||
*:lnewer* *:lnew*
|
||||
:lnew[er] [count] Same as ":cnewer", except use the location list for
|
||||
the current window instead of the quickfix list.
|
||||
|
||||
When adding a new error list, it becomes the current list.
|
||||
|
||||
When ":colder" has been used and ":make" or ":grep" is used to add a new error
|
||||
@@ -271,6 +423,11 @@ lists, use ":cnewer 99" first.
|
||||
This command does not accept a comment, any "
|
||||
characters are considered part of the arguments.
|
||||
|
||||
*:lmak* *:lmake*
|
||||
:lmak[e][!] [arguments]
|
||||
Same as ":make", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
The ":make" command executes the command given with the 'makeprg' option.
|
||||
This is done by passing the command to the shell given with the 'shell'
|
||||
option. This works almost like typing
|
||||
@@ -362,6 +519,12 @@ advantages are:
|
||||
Example: >
|
||||
:vimgrep Error *.c
|
||||
<
|
||||
*:lv* *:lvimgrep*
|
||||
:lv[imgrep][!] /{pattern}/[g][j] {file} ...
|
||||
:lv[imgrep][!] {pattern} {file} ...
|
||||
Same as ":vimgrep", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:vimgrepa* *:vimgrepadd*
|
||||
:vimgrepa[dd][!] /{pattern}/[g][j] {file} ...
|
||||
:vimgrepa[dd][!] {pattern} {file} ...
|
||||
@@ -369,6 +532,12 @@ advantages are:
|
||||
of errors the matches are appended to the current
|
||||
list.
|
||||
|
||||
*:lvimgrepa* *:lvimgrepadd*
|
||||
:lvimgrepa[dd][!] /{pattern}/[g][j] {file} ...
|
||||
:lvimgrepa[dd][!] {pattern} {file} ...
|
||||
Same as ":vimgrepadd", except the location list for
|
||||
the current window is used instead of the quickfix
|
||||
list.
|
||||
|
||||
5.2 External grep
|
||||
|
||||
@@ -384,6 +553,11 @@ id-utils) in a similar way to its compiler integration (see |:make| above).
|
||||
When 'grepprg' is "internal" this works like
|
||||
|:vimgrep|. Note that the pattern needs to be
|
||||
enclosed in separator characters then.
|
||||
|
||||
*:lgr* *:lgrep*
|
||||
:lgr[ep][!] [arguments] Same as ":grep", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
*:grepa* *:grepadd*
|
||||
:grepa[dd][!] [arguments]
|
||||
Just like ":grep", but instead of making a new list of
|
||||
@@ -397,6 +571,11 @@ id-utils) in a similar way to its compiler integration (see |:make| above).
|
||||
":grepadd" jumps to the first error, which is not
|
||||
allowed with |:bufdo|.
|
||||
|
||||
*:lgrepa* *:lgrepadd*
|
||||
:lgrepa[dd][!] [arguments]
|
||||
Same as ":grepadd", except the location list for the
|
||||
current window is used instead of the quickfix list.
|
||||
|
||||
5.3 Setting up external grep
|
||||
|
||||
If you have a standard "grep" program installed, the :grep command may work
|
||||
@@ -635,7 +814,7 @@ The "%f" conversion may depend on the current 'isfname' setting. "~/" is
|
||||
expanded to the home directory and environment variables are expanded.
|
||||
|
||||
The "%f" and "%m" conversions have to detect the end of the string. This
|
||||
normally happens by matching following characters and items. When nohting is
|
||||
normally happens by matching following characters and items. When nothing is
|
||||
following the rest of the line is matched. If "%f" is followed by a '%' or a
|
||||
backslash, it will look for a sequence of 'isfname' characters.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
*quickref.txt* For Vim version 7.0aa. Last change: 2006 Feb 13
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -211,6 +211,8 @@ N is used to indicate an optional count that can be given before the command.
|
||||
|:ts| :ts[elect][!] [tag] List matching tags and select one to jump to
|
||||
|:tjump| :tj[ump][!] [tag] Jump to tag [tag] or select from list when
|
||||
there are multiple matches
|
||||
|:ltag| :lt[ag][!] [tag] Jump to tag [tag] and add matching tags to the
|
||||
location list.
|
||||
|
||||
|:tags| :tags Print tag list
|
||||
|CTRL-T| N CTRL-T Jump back from Nth older tag in tag list
|
||||
@@ -633,6 +635,7 @@ Short explanation of each option: *option-list*
|
||||
|'compatible'| |'cp'| behave Vi-compatible as much as possible
|
||||
|'complete'| |'cpt'| specify how Insert mode completion works
|
||||
|'completefunc'| |'cfu'| function to be used for Insert mode completion
|
||||
|'completeopt'| |'cot'| options for Insert mode completion
|
||||
|'confirm'| |'cf'| ask what to do about unsaved/read-only files
|
||||
|'conskey'| |'consk'| get keys directly from console (MS-DOS only)
|
||||
|'copyindent'| |'ci'| make 'autoindent' use existing indent structure
|
||||
@@ -689,6 +692,7 @@ Short explanation of each option: *option-list*
|
||||
|'formatlistpat'| |'flp'| pattern used to recognize a list header
|
||||
|'formatoptions'| |'fo'| how automatic formatting is to be done
|
||||
|'formatprg'| |'fp'| name of external program used with "gq" command
|
||||
|'formatexpr'| |'fex'| expression used with "gq" command
|
||||
|'fsync'| |'fs'| whether to invoke fsync() after file write
|
||||
|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on
|
||||
|'grepformat'| |'gfm'| format of 'grepprg' output
|
||||
@@ -772,7 +776,8 @@ Short explanation of each option: *option-list*
|
||||
|'nrformats'| |'nf'| number formats recognized for CTRL-A command
|
||||
|'number'| |'nu'| print the line number in front of each line
|
||||
|'numberwidth'| |'nuw'| number of columns used for the line number
|
||||
|'occultfunc'| |'ofu'| function for filetype-specific completion
|
||||
|'omnifunc'| |'ofu'| function for filetype-specific completion
|
||||
|'operatorfunc'| |'opfunc'| funtion to be called for |g@| operator
|
||||
|'osfiletype'| |'oft'| operating system-specific filetype information
|
||||
|'paragraphs'| |'para'| nroff macros that separate paragraphs
|
||||
|'paste'| allow pasting text
|
||||
@@ -936,7 +941,9 @@ Short explanation of each option: *option-list*
|
||||
|:clist| :cl list all errors
|
||||
|:cfile| :cf read errors from the file 'errorfile'
|
||||
|:cgetfile| :cg like :cfile but don't jump to the first error
|
||||
|:caddfile| :cad add errors from the error file to the current
|
||||
|:caddfile| :caddf add errors from the error file to the current
|
||||
quickfix list
|
||||
|:caddexpr| :cad add errors from an expression to the current
|
||||
quickfix list
|
||||
|:cbuffer| :cb read errors from text in a buffer
|
||||
|:cexpr| :cex read errors from an expression
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*recover.txt* For Vim version 7.0aa. Last change: 2005 Feb 10
|
||||
*recover.txt* For Vim version 7.0aa. Last change: 2005 Dec 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -126,6 +126,28 @@ command:
|
||||
A Vim swap file can be recognized by the first six characters: "b0VIM ".
|
||||
After that comes the version number, e.g., "3.0".
|
||||
|
||||
|
||||
Links and symbolic links ~
|
||||
|
||||
On Unix it is possible to have two names for the same file. This can be done
|
||||
with hard links and with symbolic links (symlinks).
|
||||
|
||||
For hard links Vim does not know the other name of the file. Therefore, the
|
||||
name of the swapfile will be based on the name you used to edit the file.
|
||||
There is no check for editing the same file by the other name too, because Vim
|
||||
cannot find the other swapfile (except for searching all of your harddisk,
|
||||
which would be very slow).
|
||||
|
||||
For symbolic links Vim resolves the links to find the name of the actual file.
|
||||
The swap file name is based on that name. Thus it doesn't matter by what name
|
||||
you edit the file, the swap file name will normally be the same. However,
|
||||
there are exceptions:
|
||||
- When the directory of the actual file is not writable the swapfile is put
|
||||
elsewhere.
|
||||
- When the symbolic links somehow create a loop you get an *E773* error
|
||||
message and the unmodified file name will be used. You won't be able to
|
||||
save your file normally.
|
||||
|
||||
==============================================================================
|
||||
2. Recovery *recovery* *E308* *E311*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*scroll.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
|
||||
*scroll.txt* For Vim version 7.0aa. Last change: 2005 Dec 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -153,31 +153,39 @@ to the closest character that is on the screen. The value of 'sidescroll' is
|
||||
not used.
|
||||
|
||||
z<Right> or *zl* *z<Right>*
|
||||
zl Scroll the screen [count] characters to the left.
|
||||
This only works when 'wrap' is off. {not in Vi}
|
||||
zl Move the view on the text [count] characters to the
|
||||
right, thus scroll the text [count] characters to the
|
||||
left. This only works when 'wrap' is off. {not in
|
||||
Vi}
|
||||
|
||||
z<Left> or *zh* *z<Left>*
|
||||
zh Scroll the screen [count] characters to the right.
|
||||
This only works when 'wrap' is off. {not in Vi}
|
||||
zh Move the view on the text [count] characters to the
|
||||
left, thus scroll the text [count] characters to the
|
||||
right. This only works when 'wrap' is off. {not in
|
||||
Vi}
|
||||
|
||||
*zL*
|
||||
zL Scroll the screen half a screenwidth to the left.
|
||||
This only works when 'wrap' is off. {not in Vi}
|
||||
zL Move the view on the text half a screenwidth to the
|
||||
right, thus scroll the text half a screenwidth to the
|
||||
left. This only works when 'wrap' is off. {not in
|
||||
Vi}
|
||||
|
||||
*zH*
|
||||
zH Scroll the screen half a screenwidth to the right.
|
||||
This only works when 'wrap' is off. {not in Vi}
|
||||
zH Move the view on the text half a screenwidth to the
|
||||
left, thus scroll the text half a screenwidth to the
|
||||
right. This only works when 'wrap' is off. {not in
|
||||
Vi}
|
||||
|
||||
For the following two commands the cursor is not moved in the text, only the
|
||||
text scrolls on the screen.
|
||||
|
||||
*zs*
|
||||
zs Scroll the screen horizontally to position the cursor
|
||||
zs Scroll the text horizontally to position the cursor
|
||||
at the start (left side) of the screen. This only
|
||||
works when 'wrap' is off. {not in Vi}
|
||||
|
||||
*ze*
|
||||
ze Scroll the screen horizontally to position the cursor
|
||||
ze Scroll the text horizontally to position the cursor
|
||||
at the end (right side) of the screen. This only
|
||||
works when 'wrap' is off. {not in Vi}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*spell.txt* For Vim version 7.0aa. Last change: 2005 Aug 30
|
||||
*spell.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -35,7 +35,7 @@ Vim only checks words for spelling, there is no grammar check.
|
||||
|
||||
If the 'mousemodel' option is set to "popup" and the cursor is on a badly
|
||||
spelled word or it is "popup_setpos" and the mouse pointer is on a badly
|
||||
spelled word, then the popup menu will contain an submenu to replace the bad
|
||||
spelled word, then the popup menu will contain a submenu to replace the bad
|
||||
word. Note: this slows down the appearance of the popup menu.
|
||||
|
||||
To search for the next misspelled word:
|
||||
@@ -60,7 +60,7 @@ To search for the next misspelled word:
|
||||
[S Like "]S" but search backwards.
|
||||
|
||||
|
||||
To add words to your own word list: *E764*
|
||||
To add words to your own word list:
|
||||
|
||||
*zg*
|
||||
zg Add word under the cursor as a good word to the first
|
||||
@@ -124,13 +124,15 @@ is set.
|
||||
|
||||
|
||||
Finding suggestions for bad words:
|
||||
*z?*
|
||||
z? For the word under/after the cursor suggest correctly
|
||||
*z=*
|
||||
z= For the word under/after the cursor suggest correctly
|
||||
spelled words. This also works to find alternatives
|
||||
for a word that is not highlighted as a bad word,
|
||||
e.g., when the word after it is bad.
|
||||
The results are sorted on similarity to the word
|
||||
under/after the cursor.
|
||||
In Visual mode the highlighted text is taken as the
|
||||
word to be replaced.
|
||||
The results are sorted on similarity to the word being
|
||||
replaced.
|
||||
This may take a long time. Hit CTRL-C when you get
|
||||
bored.
|
||||
|
||||
@@ -143,7 +145,7 @@ z? For the word under/after the cursor suggest correctly
|
||||
first line (the header) to cancel.
|
||||
|
||||
If a count is used that suggestion is used, without
|
||||
prompting. For example, "1z?" always takes the first
|
||||
prompting. For example, "1z=" always takes the first
|
||||
suggestion.
|
||||
|
||||
If 'verbose' is non-zero a score will be displayed
|
||||
@@ -156,7 +158,7 @@ z? For the word under/after the cursor suggest correctly
|
||||
and other languages without spaces between words.
|
||||
|
||||
*:spellr* *:spellrepall* *E752* *E753*
|
||||
:spellr[epall] Repeat the replacement done by |z?| for all matches
|
||||
:spellr[epall] Repeat the replacement done by |z=| for all matches
|
||||
with the replaced word in the current window.
|
||||
|
||||
In Insert mode, when the cursor is after a badly spelled word, you can use
|
||||
@@ -172,6 +174,12 @@ When there is a line break right after a sentence the highlighting of the next
|
||||
line may be postponed. Use |CTRL-L| when needed. Also see |set-spc-auto| for
|
||||
how it can be set automatically when 'spelllang' is set.
|
||||
|
||||
Vim counts the number of times a good word is encountered. This is used to
|
||||
sort the suggestions: words that have been seen before get a small bonus,
|
||||
words that have been seen often get a bigger bonus. The COMMON item in the
|
||||
affix file can be used to define common words, so that this mechanism also
|
||||
works in a new or short file |spell-COMMON|.
|
||||
|
||||
==============================================================================
|
||||
2. Remarks on spell checking *spell-remarks*
|
||||
|
||||
@@ -206,7 +214,7 @@ Always use lowercase letters for the language and region names.
|
||||
When adding a word with |zg| or another command it's always added for all
|
||||
regions. You can change that by manually editing the 'spellfile'. See
|
||||
|spell-wordlist-format|. Note that the regions as specified in the files in
|
||||
'spellfile' are only used when all entries in "spelllang" specify the same
|
||||
'spellfile' are only used when all entries in 'spelllang' specify the same
|
||||
region (not counting files specified by their .spl name).
|
||||
|
||||
*spell-german*
|
||||
@@ -253,6 +261,10 @@ Only the first file is loaded, the one that is first in 'runtimepath'. If
|
||||
this succeeds then additionally files with the name LL.EEE.add.spl are loaded.
|
||||
All the ones that are found are used.
|
||||
|
||||
If no spell file is found the |SpellFileMissing| autocommand event is
|
||||
triggered. This may trigger the |spellfile.vim| plugin to offer you
|
||||
downloading the spell file.
|
||||
|
||||
Additionally, the files related to the names in 'spellfile' are loaded. These
|
||||
are the files that |zg| and |zw| add good and wrong words to.
|
||||
|
||||
@@ -296,7 +308,12 @@ A spell file might not be available in the current 'encoding'. See
|
||||
|spell-mkspell| about how to create a spell file. Converting a spell file
|
||||
with "iconv" will NOT work!
|
||||
|
||||
*E758* *E759*
|
||||
*spell-sug-file* *E781*
|
||||
If there is a file with exactly the same name as the ".spl" file but ending in
|
||||
".sug", that file will be used for giving better suggestions. It isn't loaded
|
||||
before suggestions are made to reduce memory use.
|
||||
|
||||
*E758* *E759* *E778* *E779* *E780* *E782*
|
||||
When loading a spell file Vim checks that it is properly formatted. If you
|
||||
get an error the file may be truncated, modified or intended for another Vim
|
||||
version.
|
||||
@@ -421,7 +438,7 @@ then Vim will try to guess.
|
||||
|
||||
*:mksp* *:mkspell*
|
||||
:mksp[ell][!] [-ascii] {outname} {inname} ...
|
||||
Generate a Vim spell file word lists. Example: >
|
||||
Generate a Vim spell file from word lists. Example: >
|
||||
:mkspell /tmp/nl nl_NL.words
|
||||
< *E751*
|
||||
When {outname} ends in ".spl" it is used as the output
|
||||
@@ -531,6 +548,11 @@ used spelling files, use this command:
|
||||
Note: For some languages the result may be enormous,
|
||||
causing Vim to run out of memory.
|
||||
|
||||
:spelld[ump]! Like ":spelldump" and include the word count. This is
|
||||
the number of times the word was found while
|
||||
updating the screen. Words that are in COMMON items
|
||||
get a starting count of 10.
|
||||
|
||||
The format of the word list is used |spell-wordlist-format|. You should be
|
||||
able to read it with ":mkspell" to generate one .spl file that includes all
|
||||
the words.
|
||||
@@ -542,6 +564,48 @@ for the current region are included and no "/regions" line is generated.
|
||||
Comment lines with the name of the .spl file are used as a header above the
|
||||
words that were generated from that .spl file.
|
||||
|
||||
|
||||
SPELL FILE MISSING *spell-SpellFileMissing* *spellfile.vim*
|
||||
|
||||
If the spell file for the language you are using is not available, you will
|
||||
get an error message. But if the "spellfile.vim" plugin is active it will
|
||||
offer you to download the spell file. Just follow the instructions, it will
|
||||
ask you where to write the file.
|
||||
|
||||
The plugin has a default place where to look for spell files, on the Vim ftp
|
||||
server. If you want to use another location or another protocol, set the
|
||||
g:spellfile_URL variable to the directory that holds the spell files. The
|
||||
|netrw| plugin is used for getting the file, look there for the speficic
|
||||
syntax of the URL. Example: >
|
||||
let g:spellfile_URL = 'http://ftp.vim.org/vim/runtime/spell'
|
||||
You may need to escape special characters.
|
||||
|
||||
The plugin will only ask about downloading a language once. If you want to
|
||||
try again anyway restart Vim, or set g:spellfile_URL to another value (e.g.,
|
||||
prepend a space).
|
||||
|
||||
To avoid using the "spellfile.vim" plugin do this in your vimrc file: >
|
||||
|
||||
let loaded_spellfile_plugin = 1
|
||||
|
||||
Instead of using the plugin you can define a |SpellFileMissing| autocommand to
|
||||
handle the missing file yourself. You can use it like this: >
|
||||
|
||||
:au SpellFileMissing * call Download_spell_file(expand('<amatch>'))
|
||||
|
||||
Thus the <amatch> item contains the name of the language. Another important
|
||||
value is 'encoding', since every encoding has its own spell file. With two
|
||||
exceptions:
|
||||
- For ISO-8859-15 (latin9) the name "latin1" is used (the encodings only
|
||||
differ in characters not used in dictionary words).
|
||||
- The name "ascii" may also be used for some languages where the words use
|
||||
only ASCII letters for most of the words.
|
||||
|
||||
The default "spellfile.vim" plugin uses this autocommand, if you define your
|
||||
autocommand afterwars you may want to use ":au! SpellFileMissing" to overrule
|
||||
it. If you define your autocommand before the plugin is loaded it will notice
|
||||
this and not do anything.
|
||||
|
||||
==============================================================================
|
||||
4. Spell file format *spell-file-format*
|
||||
|
||||
@@ -550,10 +614,10 @@ maintains a word list.
|
||||
|
||||
Note that we avoid the word "dictionary" here. That is because the goal of
|
||||
spell checking differs from writing a dictionary (as in the book). For
|
||||
spelling we need a list of words that are OK, thus should not to be
|
||||
highlighted. Person and company names will not appear in a dictionary, but do
|
||||
appear in a word list. And some old words are rarely used while they are
|
||||
common misspellings. These do appear in a dictionary but not in a word list.
|
||||
spelling we need a list of words that are OK, thus should not be highlighted.
|
||||
Person and company names will not appear in a dictionary, but do appear in a
|
||||
word list. And some old words are rarely used while they are common
|
||||
misspellings. These do appear in a dictionary but not in a word list.
|
||||
|
||||
There are two formats: A straight list of words and a list using affix
|
||||
compression. The files with affix compression are used by Myspell (Mozilla
|
||||
@@ -569,13 +633,16 @@ Additionally the following items are recognized:
|
||||
|
||||
- Empty and blank lines are ignored.
|
||||
|
||||
# comment ~
|
||||
- Lines starting with a # are ignored (comment lines).
|
||||
|
||||
/encoding=utf-8 ~
|
||||
- A line starting with "/encoding=", before any word, specifies the encoding
|
||||
of the file. After the second '=' comes an encoding name. This tells Vim
|
||||
to setup conversion from the specified encoding to 'encoding'. Thus you can
|
||||
use one word list for several target encodings.
|
||||
|
||||
/regions=usca ~
|
||||
- A line starting with "/regions=" specifies the region names that are
|
||||
supported. Each region name must be two ASCII letters. The first one is
|
||||
region 1. Thus "/regions=usca" has region 1 "us" and region 2 "ca".
|
||||
@@ -583,7 +650,8 @@ Additionally the following items are recognized:
|
||||
list!
|
||||
|
||||
- Other lines starting with '/' are reserved for future use. The ones that
|
||||
are not recognized are ignored (but you do get a warning message).
|
||||
are not recognized are ignored. You do get a warning message, so that you
|
||||
know something won't work.
|
||||
|
||||
- A "/" may follow the word with the following items:
|
||||
= Case must match exactly.
|
||||
@@ -608,17 +676,18 @@ accepted. This is different from a word with mixed case that is automatically
|
||||
marked as keep-case, those words may appear in all upper-case letters.
|
||||
|
||||
|
||||
FORMAT WITH AFFIX COMPRESSION
|
||||
FORMAT WITH .AFF and .DIC FILES
|
||||
|
||||
There are two files: the basic word list and an affix file. The affixes are
|
||||
There are two files: the basic word list and an affix file. The affix file
|
||||
specifies settings for the language and can contain affixes. The affixes are
|
||||
used to modify the basic words to get the full word list. This significantly
|
||||
reduces the number of words, especially for a language like Polish. This is
|
||||
called affix compression.
|
||||
|
||||
The basic word list and the affix file are combined and turned into a binary
|
||||
spell file. All the preprocessing has been done, thus this file loads fast.
|
||||
The binary spell file format is described in the source code (src/spell.c).
|
||||
But only developers need to know about it.
|
||||
The basic word list and the affix file are combined with the ":mkspell"
|
||||
command and results in a binary spell file. All the preprocessing has been
|
||||
done, thus this file loads fast. The binary spell file format is described in
|
||||
the source code (src/spell.c). But only developers need to know about it.
|
||||
|
||||
The preprocessing also allows us to take the Myspell language files and modify
|
||||
them before the Vim word list is made. The tools for this can be found in the
|
||||
@@ -630,39 +699,47 @@ here:
|
||||
http://lingucomponent.openoffice.org/affix.readme ~
|
||||
Note that affixes are case sensitive, this isn't obvious from the description.
|
||||
|
||||
Vim does not use the TRY item, it is ignored. For making suggestions the
|
||||
possible characters in the words are used.
|
||||
|
||||
Vim supports quite a few extras. They are described below |spell-affix-vim|.
|
||||
Attempts have been made to keep this compatible with other spell checkers, so
|
||||
that the same files can be used.
|
||||
that the same files can often be used. One other project that offers more
|
||||
than Myspell is Hunspell ( http://hunspell.sf.net ).
|
||||
|
||||
|
||||
WORD LIST FORMAT *spell-dic-format*
|
||||
|
||||
A very short example, with line numbers:
|
||||
A short example, with line numbers:
|
||||
|
||||
1 1234
|
||||
2 aan
|
||||
3 Als
|
||||
4 Etten-Leur
|
||||
5 et al.
|
||||
6 's-Gravenhage
|
||||
7 's-Gravenhaags
|
||||
8 bedel/P
|
||||
9 kado/1
|
||||
10 cadeau/2
|
||||
11 TCP,IP
|
||||
1 1234 ~
|
||||
2 aan ~
|
||||
3 Als ~
|
||||
4 Etten-Leur ~
|
||||
5 et al. ~
|
||||
6 's-Gravenhage ~
|
||||
7 's-Gravenhaags ~
|
||||
8 # word that differs between regions ~
|
||||
9 kado/1 ~
|
||||
10 cadeau/2 ~
|
||||
11 TCP,IP ~
|
||||
12 /the S affix may add a 's' ~
|
||||
13 bedel/S ~
|
||||
|
||||
The first line contains the number of words. Vim ignores it, but you do get
|
||||
an error message if it's not there. *E760*
|
||||
|
||||
What follows is one word per line. There should be no white space before or
|
||||
after the word. After the word there is an optional slash and flags. Most of
|
||||
these flags are letters that indicate the affixes that can be used with this
|
||||
word. These are specified with SFX and PFX lines in the .aff file. See the
|
||||
Myspell documentation. Vim allows using other flag types with the FLAG item
|
||||
in the affix file |spell-FLAG|.
|
||||
What follows is one word per line. White space at the end of the line is
|
||||
ignored, all other white space matters. The encoding is specified in the
|
||||
affix file |spell-SET|.
|
||||
|
||||
Comment lines start with '#' or '/'. See the example lines 8 and 12. Note
|
||||
that putting a comment after a word is NOT allowed:
|
||||
|
||||
someword # comment that causes an error! ~
|
||||
|
||||
After the word there is an optional slash and flags. Most of these flags are
|
||||
letters that indicate the affixes that can be used with this word. These are
|
||||
specified with SFX and PFX lines in the .aff file, see |spell-SFX| and
|
||||
|spell-PFX|. Vim allows using other flag types with the FLAG item in the
|
||||
affix file |spell-FLAG|.
|
||||
|
||||
When the word only has lower-case letters it will also match with the word
|
||||
starting with an upper-case letter.
|
||||
@@ -672,7 +749,7 @@ is required at this position. The same word with a lower-case letter at this
|
||||
position will not match. When some of the other letters are upper-case it will
|
||||
not match either.
|
||||
|
||||
The word with all upper-case characters will always be OK.
|
||||
The word with all upper-case characters will always be OK,
|
||||
|
||||
word list matches does not match ~
|
||||
als als Als ALS ALs AlS aLs aLS
|
||||
@@ -680,49 +757,60 @@ The word with all upper-case characters will always be OK.
|
||||
ALS ALS als Als ALs AlS aLs aLS
|
||||
AlS AlS ALS als Als ALs aLs aLS
|
||||
|
||||
The KEP affix ID can be used to specifically match a word with identical case
|
||||
only, see below |spell-KEP|.
|
||||
The KEEPCASE affix ID can be used to specifically match a word with identical
|
||||
case only, see below |spell-KEEPCASE|.
|
||||
|
||||
Note in line 5 to 7 that non-word characters are used. You can include
|
||||
any character in a word. When checking the text a word still only matches
|
||||
when it appears with a non-word character before and after it. For Myspell a
|
||||
word starting with a non-word character probably won't work.
|
||||
Note: in line 5 to 7 non-word characters are used. You can include any
|
||||
character in a word. When checking the text a word still only matches when it
|
||||
appears with a non-word character before and after it. For Myspell a word
|
||||
starting with a non-word character probably won't work.
|
||||
|
||||
In line 12 the word "TCP/IP" is defined. Since the slash has a special
|
||||
meaning the comma is used instead. This is defined with the SLASH item in the
|
||||
affix file, see |spell-SLASH|. Note that without this SLASH item the
|
||||
word will be "TCP,IP".
|
||||
affix file, see |spell-SLASH|. Note that without this SLASH item the word
|
||||
will be "TCP,IP".
|
||||
|
||||
*spell-affix-vim*
|
||||
A flag that Vim adds and is not in Myspell is the flag defined with KEP in the
|
||||
affix file. This has the meaning that case matters. This can be used if the
|
||||
word does not have the first letter in upper case at the start of a sentence.
|
||||
Example (assuming that = was used for KEP):
|
||||
|
||||
word list matches does not match ~
|
||||
's morgens/= 's morgens 'S morgens 's Morgens 'S MORGENS
|
||||
's Morgens 's Morgens 'S MORGENS 'S morgens 's morgens
|
||||
AFFIX FILE FORMAT *spell-aff-format* *spell-affix-vim*
|
||||
|
||||
The flag can also be used to avoid that the word matches when it is in all
|
||||
upper-case letters.
|
||||
*spell-affix-comment*
|
||||
Comment lines in the .aff file start with a '#':
|
||||
|
||||
# comment line ~
|
||||
|
||||
With some items it's also possible to put a comment after it, but this isn't
|
||||
supported in general.
|
||||
|
||||
|
||||
ENCODING *spell-SET*
|
||||
|
||||
The affix file can be in any encoding that is supported by "iconv". However,
|
||||
in some cases the current locale should also be set properly at the time
|
||||
|:mkspell| is invoked. Adding FOL/LOW/UPP lines removes this requirement
|
||||
|spell-FOL|.
|
||||
|
||||
The encoding should be specified before anything where the encoding matters.
|
||||
The encoding applies both to the affix file and the dictionary file. It is
|
||||
done with a SET line:
|
||||
|
||||
SET utf-8 ~
|
||||
|
||||
The encoding can be different from the value of the 'encoding' option at the
|
||||
time ":mkspell" is used. Vim will then convert everything to 'encoding' and
|
||||
generate a spell file for 'encoding'. If some of the used characters to not
|
||||
fit in 'encoding' you will get an error message.
|
||||
*spell-affix-mbyte*
|
||||
The basic word list is normally in an 8-bit encoding, which is mentioned in
|
||||
the affix file. The affix file must always be in the same encoding as the
|
||||
word list. This is compatible with Myspell. For Vim the encoding may also be
|
||||
something else, any encoding that "iconv" supports. The "SET" line must
|
||||
specify the name of the encoding. When using a multi-byte encoding it's
|
||||
possible to use more different affixes (but Myspell doesn't support that, thus
|
||||
you may not want to use it anyway).
|
||||
When using a multi-byte encoding it's possible to use more different affix
|
||||
flags. But Myspell doesn't support that, thus you may not want to use it
|
||||
anyway. For compatibility use an 8-bit encoding.
|
||||
|
||||
|
||||
CHARACTER TABLES
|
||||
*spell-affix-chars*
|
||||
When using an 8-bit encoding the affix file should define what characters are
|
||||
word characters (as specified with ENC). This is because the system where
|
||||
":mkspell" is used may not support a locale with this encoding and isalpha()
|
||||
won't work. For example when using "cp1250" on Unix.
|
||||
|
||||
word characters. This is because the system where ":mkspell" is used may not
|
||||
support a locale with this encoding and isalpha() won't work. For example
|
||||
when using "cp1250" on Unix.
|
||||
*E761* *E762* *spell-FOL*
|
||||
*spell-LOW* *spell-UPP*
|
||||
Three lines in the affix file are needed. Simplistic example:
|
||||
@@ -774,7 +862,7 @@ the word. This is needed to detect a spelling error such as they'are. That
|
||||
should be they're, but since "they" and "are" are words themselves that would
|
||||
go unnoticed.
|
||||
|
||||
These characters are defined with MIDWORD in the .aff file:
|
||||
These characters are defined with MIDWORD in the .aff file. Example:
|
||||
|
||||
MIDWORD '- ~
|
||||
|
||||
@@ -808,9 +896,58 @@ The usual PFX (prefix) and SFX (suffix) lines are supported (see the Myspell
|
||||
documentation or the Aspell manual:
|
||||
http://aspell.net/man-html/Affix-Compression.html).
|
||||
|
||||
Note that Myspell ignores any extra text after the relevant info. Vim
|
||||
requires this text to start with a "#" so that mistakes don't go unnoticed.
|
||||
Example:
|
||||
Summary:
|
||||
SFX L Y 2 ~
|
||||
SFX L 0 re [^x] ~
|
||||
SFX L 0 ro x ~
|
||||
|
||||
The first line is a header and has four fields:
|
||||
SFX {flag} {combine} {count}
|
||||
|
||||
{flag} The name used for the suffix. Mostly it's a single letter,
|
||||
but other characters can be used, see |spell-FLAG|.
|
||||
|
||||
{combine} Can be 'Y' or 'N'. When 'Y' then the word plus suffix can
|
||||
also have a prefix. When 'N' then a prefix is not allowed.
|
||||
|
||||
{count} The number of lines following. If this is wrong you will get
|
||||
an error message.
|
||||
|
||||
For PFX the fields are exactly the same.
|
||||
|
||||
The basic format for the following lines is:
|
||||
SFX {flag} {strip} {add} {condition}
|
||||
|
||||
{flag} Must be the same as the {flag} used in the first line.
|
||||
|
||||
{strip} Characters removed from the basic word. There is no check if
|
||||
the characters are actually there, only the length is used (in
|
||||
bytes). This better match the {condition}, otherwise strange
|
||||
things may happen. If the {strip} length is equal to or
|
||||
longer than the basic word the suffix won't be used.
|
||||
When {strip} is 0 (zero) then nothing is stripped.
|
||||
|
||||
{add} Characters added to the basic word, after removing {strip}.
|
||||
|
||||
{condition} A simplistic pattern. Only when this matches with a basic
|
||||
word will the suffix be used for that word. This is normally
|
||||
for using one suffix letter with different {add} and {strip}
|
||||
fields for words with different endings.
|
||||
When {condition} is a . (dot) there is no condition.
|
||||
The pattern may contain:
|
||||
- Literal characters.
|
||||
- A set of characters in []. [abc] matches a, b and c.
|
||||
A dash is allowed for a range [a-c], but this is
|
||||
Vim-specific.
|
||||
- A set of characters that starts with a ^, meaning the
|
||||
complement of the specified characters. [^abc] matches any
|
||||
character but a, b and c.
|
||||
|
||||
For PFX the fields are the same, but the {strip}, {add} and {condition} apply
|
||||
to the start of the word.
|
||||
|
||||
Note: Myspell ignores any extra text after the relevant info. Vim requires
|
||||
this text to start with a "#" so that mistakes don't go unnoticed. Example:
|
||||
|
||||
SFX F 0 in [^i]n # Spion > Spionin ~
|
||||
SFX F 0 nen in # Bauerin > Bauerinnen ~
|
||||
@@ -826,16 +963,49 @@ Myspell that use this feature apparently have this flag. Example:
|
||||
SFX a 0 en . ~
|
||||
SFX a 0 on . ~
|
||||
|
||||
|
||||
AFFIX FLAGS *spell-affix-flags*
|
||||
|
||||
This is a feature that comes from Hunspell: The affix may specify flags. This
|
||||
works similar to flags specified on a basic word. The flags apply to the
|
||||
basic word plus the affix. Example:
|
||||
|
||||
SFX S Y 1 ~
|
||||
SFX S 0 s . ~
|
||||
|
||||
SFX A Y 1 ~
|
||||
SFX A 0 able/S . ~
|
||||
|
||||
When the dictionary file contains "drink/AS" then these words are possible:
|
||||
|
||||
drink
|
||||
drinks uses S suffix
|
||||
drinkable uses A suffix
|
||||
drinkables uses A suffix and then S suffix
|
||||
|
||||
Generally the flags of the suffix are added to the flags of the basic word,
|
||||
both are used for the word plus suffix. But the flags of the basic word are
|
||||
only used once for affixes, except that both one prefix and one suffix can be
|
||||
used when both support combining.
|
||||
|
||||
Specifically, the affix flags can be used for:
|
||||
- Affixes on affixes, as in the example above.
|
||||
- Making the word with the affix rare, by using the |spell-RARE| flag.
|
||||
- Exclude the word with the affix from compounding, by using the
|
||||
|spell-COMPOUNDFORBIDFLAG| flag.
|
||||
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
OLD STUFF
|
||||
*spell-affix-rare*
|
||||
An extra item for Vim is the "rare" flag. It must come after the other
|
||||
fields, before a comment. When used then all words that use the affix will be
|
||||
marked as rare words. Example:
|
||||
marked as rare words. Examples:
|
||||
|
||||
PFX F 0 nene . rare ~
|
||||
SFX F 0 oin n rare # hardly ever used ~
|
||||
|
||||
However, if the word also appears as a good word in another way it won't be
|
||||
marked as rare.
|
||||
However, if the word also appears as a good word in another way (e.g., in
|
||||
another region) it won't be marked as rare.
|
||||
|
||||
*spell-affix-nocomp*
|
||||
Another extra item for Vim is the "nocomp" flag. It must come after the other
|
||||
@@ -852,6 +1022,7 @@ Example:
|
||||
util/ac ~
|
||||
|
||||
This allows for "wordutil" and "wordutils" but not "wordutilize".
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
*spell-PFXPOSTPONE*
|
||||
When an affix file has very many prefixes that apply to many words it's not
|
||||
@@ -872,34 +1043,38 @@ word to start with an upper case letter.
|
||||
WORDS WITH A SLASH *spell-SLASH*
|
||||
|
||||
The slash is used in the .dic file to separate the basic word from the affix
|
||||
letters that can be used. Unfortunately, this means you cannot use a slash in
|
||||
a word. Thus "TCP/IP" cannot be a word. To work around that you can define a
|
||||
replacement character for the slash. Example:
|
||||
|
||||
SLASH , ~
|
||||
|
||||
Now you can use "TCP,IP" to add the word "TCP/IP".
|
||||
|
||||
Of course, the letter used should itself not appear in any word! The letter
|
||||
must be ASCII, thus a single byte.
|
||||
letters and other flags. Unfortunately, this means you cannot use a slash in
|
||||
a word. Thus "TCP/IP" is not a word but "TCP with the flags "IP". To include
|
||||
a slash in the word put a backslash before it: "TCP\/IP". In the rare case
|
||||
you want to use a backslash inside a word you need to use two backslashes.
|
||||
Any other use of the backslash is reserved for future expansion.
|
||||
|
||||
|
||||
KEEP-CASE WORDS *spell-KEP*
|
||||
KEEP-CASE WORDS *spell-KEEPCASE*
|
||||
|
||||
In the affix file a KEP line can be used to define the affix name used for
|
||||
keep-case words. Example:
|
||||
In the affix file a KEEPCASE line can be used to define the affix name used
|
||||
for keep-case words. Example:
|
||||
|
||||
KEP = ~
|
||||
KEEPCASE = ~
|
||||
|
||||
See above for an example |spell-affix-vim|.
|
||||
This flag is not supported by Myspell. It has the meaning that case matters.
|
||||
This can be used if the word does not have the first letter in upper case at
|
||||
the start of a sentence. Example:
|
||||
|
||||
word list matches does not match ~
|
||||
's morgens/= 's morgens 'S morgens 's Morgens 'S MORGENS
|
||||
's Morgens 's Morgens 'S MORGENS 'S morgens 's morgens
|
||||
|
||||
The flag can also be used to avoid that the word matches when it is in all
|
||||
upper-case letters.
|
||||
|
||||
|
||||
RARE WORDS *spell-RAR*
|
||||
RARE WORDS *spell-RARE*
|
||||
|
||||
In the affix file a RAR line can be used to define the affix name used for
|
||||
In the affix file a RARE line can be used to define the affix name used for
|
||||
rare words. Example:
|
||||
|
||||
RAR ? ~
|
||||
RARE ? ~
|
||||
|
||||
Rare words are highlighted differently from bad words. This is to be used for
|
||||
words that are correct for the language, but are hardly ever used and could be
|
||||
@@ -922,18 +1097,15 @@ This can be used to exclude words that would otherwise be good. For example
|
||||
Once a word has been marked as bad it won't be undone by encountering the same
|
||||
word as good.
|
||||
|
||||
The flag also applies to the word with affixes, thus this can be used to mark
|
||||
a whole bunch of related words as bad.
|
||||
|
||||
*spell-NEEDAFFIX*
|
||||
The NEEDAFFIX flag is used to require that a word is used with an affix. The
|
||||
word itself is not a good word. Example:
|
||||
word itself is not a good word (unless there is an empty affix). Example:
|
||||
|
||||
NEEDAFFIX + ~
|
||||
|
||||
*spell-NEEDCOMPOUND*
|
||||
The NEEDCOMPOUND flag is used to require that a word is used as part of a
|
||||
compound word The word itself is not a good word. Example:
|
||||
|
||||
NEEDCOMPOUND & ~
|
||||
|
||||
|
||||
COMPOUND WORDS *spell-compound*
|
||||
|
||||
@@ -944,8 +1116,8 @@ call this character a flag here. Obviously these flags must be different from
|
||||
any affix IDs used.
|
||||
|
||||
*spell-COMPOUNDFLAG*
|
||||
The Myspell compatible method uses one flag, specified with COMPOUNDFLAG.
|
||||
All words with this flag combine in any order. This means there is no control
|
||||
The Myspell compatible method uses one flag, specified with COMPOUNDFLAG. All
|
||||
words with this flag combine in any order. This means there is no control
|
||||
over which word comes first. Example:
|
||||
COMPOUNDFLAG c ~
|
||||
|
||||
@@ -1006,6 +1178,12 @@ A specific example: Allow a compound to be made of two words and a dash:
|
||||
|
||||
This allows for the word "start-end", but not "startend".
|
||||
|
||||
*spell-NEEDCOMPOUND*
|
||||
The NEEDCOMPOUND flag is used to require that a word is used as part of a
|
||||
compound word. The word itself is not a good word. Example:
|
||||
|
||||
NEEDCOMPOUND & ~
|
||||
|
||||
*spell-COMPOUNDMIN*
|
||||
The minimal character length of a word used for compounding is specified with
|
||||
COMPOUNDMIN. Example:
|
||||
@@ -1037,6 +1215,17 @@ If both COMPOUNDMAX and COMPOUNDSYLMAX are defined, a compound word is
|
||||
accepted if it fits one of the criteria, thus is either made from up to
|
||||
COMPOUNDMAX words or contains up to COMPOUNDSYLMAX syllables.
|
||||
|
||||
*spell-COMPOUNDFORBIDFLAG*
|
||||
The COMPOUNDFORBIDFLAG specifies a flag that can be used on an affix. It
|
||||
means that the word plus affix cannot be used in a compound word.
|
||||
NOT IMPLEMENTED YET.
|
||||
|
||||
*spell-COMPOUNDPERMITFLAG*
|
||||
The COMPOUNDPERMITFLAG specifies a flag that can be used on an affix. It
|
||||
means that the word plus affix can also be used in a compound word in a way
|
||||
where the affix ends up halfway the word.
|
||||
NOT IMPLEMENTED YET.
|
||||
|
||||
*spell-SYLLABLE*
|
||||
The SYLLABLE item defines characters or character sequences that are used to
|
||||
count the number of syllables in a word. Example:
|
||||
@@ -1065,44 +1254,29 @@ the affix file, without arguments:
|
||||
Vim will try to figure out where one word ends and a next starts. When there
|
||||
are spelling mistakes this may not be quite right.
|
||||
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
NOTE: The following has not been implemented yet, because there are no word
|
||||
lists that support this.
|
||||
> *spell-CMP*
|
||||
> Sometimes it is necessary to change a word when concatenating it to another,
|
||||
> by removing a few letters, inserting something or both. It can also be useful
|
||||
> to restrict concatenation to words that match a pattern. For this purpose CMP
|
||||
> items can be used. They look like this:
|
||||
> CMP {flag} {flags} {strip} {strip2} {add} {cond} {cond2}
|
||||
>
|
||||
> {flag} the flag, as used in COMPOUNDFLAGS for the lead word
|
||||
> {flags} accepted flags for the following word ('.' to accept
|
||||
> all)
|
||||
> {strip} text to remove from the end of the lead word (zero
|
||||
> for no stripping)
|
||||
> {strip2} text to remove from the start of the following word
|
||||
> (zero for no stripping)
|
||||
> {add} text to insert between the words (zero for no
|
||||
> addition)
|
||||
> {cond} condition to match at the end of the lead word
|
||||
> {cond2} condition to match at the start of the following word
|
||||
>
|
||||
> This is the same as what is used for SFX and PFX items, with the extra {flags}
|
||||
> and {cond2} fields. Example:
|
||||
> CMP f mrt 0 - . . ~
|
||||
>
|
||||
> When used with the food and dish word list above, this means that a dash is
|
||||
> inserted after each food item. Thus you get "onion-soup" and
|
||||
> "onion-tomato-salat".
|
||||
>
|
||||
> When there are CMP items for a compound flag the concatenation is only done
|
||||
> when a CMP item matches.
|
||||
>
|
||||
> When there are no CMP items for a compound flag, then all words will be
|
||||
> concatenated, as if there was an item:
|
||||
> CMP {flag} . 0 0 . .
|
||||
>
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
*spell-COMMON*
|
||||
Common words can be specified with the COMMON item. This will give better
|
||||
suggestions when editing a short file. Example:
|
||||
|
||||
COMMON the of to and a in is it you that he was for on are ~
|
||||
|
||||
The words must be separated by white space, up to 25 per line.
|
||||
When multiple regions are specified in a ":mkspell" command the common words
|
||||
for all regions are combined and used for all regions.
|
||||
|
||||
*spell-NOSPLITSUGS*
|
||||
This item indicates that splitting a word to make suggestions is not a good
|
||||
idea. Split-word suggestions will appear only when there are few similar
|
||||
words.
|
||||
|
||||
NOSPLITSUGS ~
|
||||
|
||||
*spell-NOSUGGEST*
|
||||
The flag specified with NOSUGGEST can be used for words that will not be
|
||||
suggested. Can be used for obscene words.
|
||||
|
||||
NOSUGGEST % ~
|
||||
|
||||
|
||||
REPLACEMENTS *spell-REP*
|
||||
@@ -1118,14 +1292,18 @@ used to make spelling suggestions. The items define the "from" text and the
|
||||
REP ch k ~
|
||||
|
||||
The first line specifies the number of REP lines following. Vim ignores the
|
||||
number, but it must be there.
|
||||
number, but it must be there (for compatibility with Myspell).
|
||||
|
||||
Don't include simple one-character replacements or swaps. Vim will try these
|
||||
anyway. You can include whole words if you want to, but you might want to use
|
||||
the "file:" item in 'spellsuggest' instead.
|
||||
|
||||
You can include a space by using an underscore:
|
||||
|
||||
SIMILAR CHARACTERS *spell-MAP*
|
||||
REP the_the the ~
|
||||
|
||||
|
||||
SIMILAR CHARACTERS *spell-MAP* *E783*
|
||||
|
||||
In the affix file MAP items can be used to define letters that are very much
|
||||
alike. This is mostly used for a letter with different accents. This is used
|
||||
@@ -1142,6 +1320,21 @@ Each letter must appear in only one of the MAP items. It's a bit more
|
||||
efficient if the first letter is ASCII or at least one without accents.
|
||||
|
||||
|
||||
.SUG FILE *spell-NOSUGFILE*
|
||||
|
||||
When soundfolding is specified in the affix file then ":mkspell" will normally
|
||||
produce a .sug file next to the .spl file. This file is used to find
|
||||
suggestions by their sound-a-like form quickly. At the cost of a lot of
|
||||
memory (the amount depends on the number of words, |:mkspell| will display an
|
||||
estimate when it's done).
|
||||
|
||||
To avoid producing a .sug file use this item in the affix file:
|
||||
|
||||
NOSUGFILE ~
|
||||
|
||||
Users can simply omit the .sug file if they don't want to use it.
|
||||
|
||||
|
||||
SOUND-A-LIKE *spell-SAL*
|
||||
|
||||
In the affix file SAL items can be used to define the sounds-a-like mechanism
|
||||
@@ -1190,7 +1383,108 @@ white space is replaced by one space. Sequences of the same character in
|
||||
SOFOFROM are replaced by one.
|
||||
|
||||
You can use the |soundfold()| function to try out the results. Or set the
|
||||
'verbose' option to see the score in the output of the |z?| command.
|
||||
'verbose' option to see the score in the output of the |z=| command.
|
||||
|
||||
|
||||
UNSUPPORTED ITEMS *spell-affix-not-supported*
|
||||
|
||||
These items appear in the affix file of other spell checkers. In Vim they are
|
||||
ignored, not supported or defined in another way.
|
||||
|
||||
ACCENT (Hunspell) *spell-ACCENT*
|
||||
Use MAP instead. |spell-MAP|
|
||||
|
||||
CHECKCOMPOUNDCASE (Hunspell) *spell-CHECKCOMPOUNDCASE*
|
||||
Disallow uppercase letters at compound word boundaries.
|
||||
Not supported.
|
||||
|
||||
CHECKCOMPOUNDDUP (Hunspell) *spell-CHECKCOMPOUNDDUP*
|
||||
Disallow using the same word twice in a compound. Not
|
||||
supported.
|
||||
|
||||
CHECKCOMPOUNDREP (Hunspell) *spell-CHECKCOMPOUNDREP*
|
||||
Something about using REP items and compound words. Not
|
||||
supported.
|
||||
|
||||
CHECKCOMPOUNDTRIPLE (Hunspell) *spell-CHECKCOMPOUNDTRIPLE*
|
||||
Forbid three identical characters when compounding. Not
|
||||
supported.
|
||||
|
||||
CHECKCOMPOUNDPATTERN (Hunspell) *spell-CHECKCOMPOUNDPATTERN*
|
||||
Forbid compounding when patterns match. Not supported.
|
||||
|
||||
CIRCUMFIX (Hunspell) *spell-CIRCUMFIX*
|
||||
This means a prefix and suffix must be added at the same time.
|
||||
Instead only specify the suffix, and give the that suffix two
|
||||
flags: The required prefix and the NEEDAFFIX flag.
|
||||
|spell-NEEDAFFIX|
|
||||
|
||||
COMPLEXPREFIXES (Hunspell) *spell-COMPLEXPREFIXES*
|
||||
Enables using two prefixes. Not supported.
|
||||
|
||||
COMPOUNDBEGIN (Hunspell) *spell-COMPOUNDBEGIN*
|
||||
Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
|
||||
|
||||
COMPOUNDEND (Hunspell) *spell-COMPOUNDEND*
|
||||
Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
|
||||
|
||||
COMPOUNDMIDDLE (Hunspell) *spell-COMPOUNDMIDDLE*
|
||||
Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
|
||||
|
||||
COMPOUNDROOT (Hunspell) *spell-COMPOUNDROOT*
|
||||
Flag for words in the dictionary that are already a compound.
|
||||
Vim doesn't use it.
|
||||
|
||||
COMPOUNDSYLLABLE (Hunspell) *spell-COMPOUNDSYLLABLE*
|
||||
Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE|
|
||||
|spell-COMPOUNDSYLMAX|
|
||||
|
||||
COMPOUNDWORDMAX (Hunspell) *spell-COMPOUNDWORDMAX*
|
||||
Use COMPOUNDMAX instead. |spell-COMPOUNDMAX|
|
||||
|
||||
FORBIDDENWORD (Hunspell) *spell-FORBIDDENWORD*
|
||||
Use BAD instead. |spell-BAD|
|
||||
|
||||
HOME (Hunspell) *spell-HOME*
|
||||
Specifies the website for the language. Not supported.
|
||||
|
||||
LANG (Hunspell) *spell-LANG*
|
||||
This specifies language-specific behavior. This actually
|
||||
moves part of the language knowledge into the program,
|
||||
therefore Vim does not support it. Each language property
|
||||
must be specified separately.
|
||||
|
||||
LEMMA_PRESENT (Hunspell) *spell-LEMMA_PRESENT*
|
||||
Only needed for mprphological analysis.
|
||||
|
||||
MAXNGRAMSUGS (Hunspell) *spell-MAXNGRAMSUGS*
|
||||
Not supported.
|
||||
|
||||
NAME (Hunspell) *spell-NAME*
|
||||
Specifies the name of the language. Not supported.
|
||||
|
||||
ONLYINCOMPOUND (Hunspell) *spell-ONLYINCOMPOUND*
|
||||
Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND|
|
||||
|
||||
PSEUDOROOT (Hunspell) *spell-PSEUDOROOT*
|
||||
Use NEEDAFFIX instead. |spell-NEEDAFFIX|
|
||||
|
||||
SUGSWITHDOTS (Hunspell) *spell-SUGSWITHDOTS*
|
||||
Adds dots to suggestions. Vim doesn't need this.
|
||||
|
||||
SYLLABLENUM (Hunspell) *spell-SYLLABLENUM*
|
||||
Not supported.
|
||||
|
||||
TRY (Myspell, Hunspell, others) *spell-TRY*
|
||||
Vim does not use the TRY item, it is ignored. For making
|
||||
suggestions the actual characters in the words are used.
|
||||
|
||||
VERSION (Hunspell) *spell-VERSION*
|
||||
Specifies the version for the language. Not supported.
|
||||
|
||||
WORDCHARS (Hunspell) *spell-WORDCHARS*
|
||||
Used to recognize words. Vim doesn't need it, because there
|
||||
is no need to separate words before checking them (using a
|
||||
trie instead of a hashtable).
|
||||
|
||||
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 7.0aa. Last change: 2005 Jun 30
|
||||
*starting.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -372,6 +372,14 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
|
||||
-O[N] Open N windows, split vertically. Otherwise it's like -o.
|
||||
If both the -o and the -O option are given, the last one on
|
||||
the command line determines how the windows will be split.
|
||||
{not in Vi}
|
||||
|
||||
*-p*
|
||||
-p[N] Open N tab pages. If [N] is not given, one tab page is opened
|
||||
for every file given as argument. The maximum is set with
|
||||
'tabpagemax' pages (default 10). If there are more tab pages
|
||||
than arguments, the last few tab pages will be editing an
|
||||
empty file.
|
||||
{not in Vi}
|
||||
|
||||
*-T*
|
||||
@@ -706,7 +714,8 @@ accordingly. Vim proceeds in this order:
|
||||
'shell' option. On MS-DOS and Win32, the COMSPEC variable is used
|
||||
if SHELL is not set.
|
||||
The environment variable TERM, if it exists, is used to set the 'term'
|
||||
option.
|
||||
option. However, 'term' will change later when starting the GUI (step
|
||||
8 below).
|
||||
|
||||
2. Process the arguments
|
||||
The options and file names from the command that start Vim are
|
||||
@@ -789,17 +798,19 @@ accordingly. Vim proceeds in this order:
|
||||
|
||||
4. Load the plugin scripts. *load-plugins*
|
||||
This does the same as the command: >
|
||||
:runtime! plugin/*.vim
|
||||
:runtime! plugin/**/*.vim
|
||||
< The result is that all directories in the 'runtimepath' option will be
|
||||
searched for the "plugin" sub-directory and all files ending in ".vim"
|
||||
will be sourced (in alphabetical order per directory).
|
||||
will be sourced (in alphabetical order per directory), also in
|
||||
subdirectories.
|
||||
Loading plugins won't be done when:
|
||||
- The 'loadplugins' option was reset in a vimrc file.
|
||||
- The |--noplugin| command line argument is used.
|
||||
- The "-u NONE" command line argument is used |-u|.
|
||||
- When Vim was compiled without the |+eval| feature.
|
||||
Note that using "-c set noloadplugins" doesn't work, because the
|
||||
commands from the command line have not been executed yet.
|
||||
Note that using "-c 'set noloadplugins'" doesn't work, because the
|
||||
commands from the command line have not been executed yet. You can
|
||||
use "--cmd 'set noloadplugins'" |--cmd|.
|
||||
|
||||
5. Set 'shellpipe' and 'shellredir'
|
||||
The 'shellpipe' and 'shellredir' options are set according to the
|
||||
@@ -828,6 +839,8 @@ accordingly. Vim proceeds in this order:
|
||||
11. Open all windows
|
||||
When the |-o| flag was given, windows will be opened (but not
|
||||
displayed yet).
|
||||
When the |-p| flag was given, tab pages will be created (but not
|
||||
displayed yet).
|
||||
When switching screens, it happens now. Redrawing starts.
|
||||
If the "-q" flag was given to Vim, the first error is jumped to.
|
||||
Buffers for all windows will be loaded.
|
||||
@@ -1200,6 +1213,16 @@ An example mapping: >
|
||||
:nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/
|
||||
This saves the current Session, and starts off the command to load another.
|
||||
|
||||
A session only includes the current tab page. There currently is no option to
|
||||
store all tab pages. |tab-page|
|
||||
|
||||
The |SessionLoadPost| autocmd event is triggered after a session file is
|
||||
loaded/sourced.
|
||||
*SessionLoad-variable*
|
||||
While the session file is loading the SessionLoad global variable is set to 1.
|
||||
Plugins can use this to postpone some work until the SessionLoadPost event is
|
||||
triggered.
|
||||
|
||||
*:mkvie* *:mkview*
|
||||
:mkvie[w][!] [file] Write a Vim script that restores the contents of the
|
||||
current window.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 7.0aa. Last change: 2005 Aug 30
|
||||
*syntax.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1460,6 +1460,25 @@ may be changed by the user if s/he is experiencing synchronization
|
||||
difficulties (such as may happen with large lex files).
|
||||
|
||||
|
||||
LISP *lisp.vim* *ft-lisp-syntax*
|
||||
|
||||
The lisp syntax highlighting provides two options: >
|
||||
|
||||
g:lisp_instring : if it exists, then "(...)" strings are highlighted
|
||||
as if the contents of the string were lisp.
|
||||
Useful for AutoLisp.
|
||||
g:lisp_rainbow : if it exists and is nonzero, then differing levels
|
||||
of parenthesization will receive different
|
||||
highlighting.
|
||||
<
|
||||
The g:lisp_rainbow option provides 10 levels of individual colorization for
|
||||
the parentheses and backquoted parentheses. Because of the quantity of
|
||||
colorization levels, unlike non-rainbow highlighting, the rainbow mode
|
||||
specifies its highlighting using ctermfg and guifg, thereby bypassing the
|
||||
usual colorscheme control using standard highlighting groups. The actual
|
||||
highlighting used depends on the dark/bright setting (see |'bg'|).
|
||||
|
||||
|
||||
LITE *lite.vim* *ft-lite-syntax*
|
||||
|
||||
There are two options for the lite syntax highlighting.
|
||||
@@ -1865,6 +1884,13 @@ If you want to fold blocks in if statements, etc. as well set the following: >
|
||||
|
||||
:let perl_fold_blocks = 1
|
||||
|
||||
To avoid folding packages or subs when perl_fold is let, let the appropriate
|
||||
variable(s): >
|
||||
|
||||
:unlet perl_nofold_packages
|
||||
:unlet perl_nofold_subs
|
||||
|
||||
|
||||
|
||||
PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax*
|
||||
|
||||
@@ -2116,29 +2142,58 @@ number is that redrawing can become slow.
|
||||
|
||||
RUBY *ruby.vim* *ft-ruby-syntax*
|
||||
|
||||
There are a few options to the Ruby syntax highlighting.
|
||||
There are a number of options to the Ruby syntax highlighting.
|
||||
|
||||
By default, the "end" keyword is colorized according to the opening statement
|
||||
of the block it closes. While useful, this feature can be expensive: if you
|
||||
of the block it closes. While useful, this feature can be expensive; if you
|
||||
experience slow redrawing (or you are on a terminal with poor color support)
|
||||
you may want to turn it off by defining the "ruby_no_expensive" variable: >
|
||||
|
||||
:let ruby_no_expensive = 1
|
||||
|
||||
In this case the same color will be used for all control keywords.
|
||||
|
||||
If you do want this feature enabled, but notice highlighting errors while
|
||||
scrolling backwards, which are fixed when redrawing with CTRL-L, try setting
|
||||
the "ruby_minlines" variable to a value larger than 50: >
|
||||
|
||||
:let ruby_minlines = 100
|
||||
|
||||
Ideally, this value should be a number of lines large enough to embrace your
|
||||
largest class or module.
|
||||
|
||||
Finally, if you do not like to see too many color items around, you can define
|
||||
Highlighting of special identifiers can be disabled by defining
|
||||
"ruby_no_identifiers": >
|
||||
|
||||
:let ruby_no_identifiers = 1
|
||||
|
||||
This will prevent highlighting of special identifiers like "ConstantName",
|
||||
"$global_var", "@instance_var", "| iterator |", and ":symbol".
|
||||
"$global_var", "@@class_var", "@instance_var", "| block_param |", and
|
||||
":symbol".
|
||||
|
||||
Significant methods of Kernel, Module and Object are highlighted by default.
|
||||
This can be disabled by defining "ruby_no_special_methods": >
|
||||
|
||||
:let ruby_no_special_methods = 1
|
||||
|
||||
This will prevent highlighting of important methods such as "require", "attr",
|
||||
"private", "raise" and "proc".
|
||||
|
||||
Whitespace errors can be highlighted by defining "ruby_space_errors": >
|
||||
|
||||
:let ruby_space_errors = 1
|
||||
|
||||
This will highlight trailing whitespace and tabs preceded by a space character
|
||||
as errors. This can be refined by defining "ruby_no_trail_space_error" and
|
||||
"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after
|
||||
spaces respectively.
|
||||
|
||||
Folding can be enabled by defining "ruby_fold": >
|
||||
|
||||
:let ruby_fold = 1
|
||||
|
||||
This will set the 'foldmethod' option to "syntax" and allow folding of
|
||||
classes, modules, methods, code blocks, heredocs and comments.
|
||||
SCHEME *scheme.vim* *ft-scheme-syntax*
|
||||
|
||||
By default only R5RS keywords are highlighted and properly indented.
|
||||
@@ -3197,7 +3252,7 @@ A more complicated Example: >
|
||||
<
|
||||
abcfoostringbarabc
|
||||
mmmmmmmmmmm match
|
||||
ssrrrreee highlight start/region/end ("Foo", "Exa" and "Bar")
|
||||
sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar")
|
||||
|
||||
Leading context *:syn-lc* *:syn-leading* *:syn-context*
|
||||
|
||||
@@ -3562,7 +3617,7 @@ You can clear specific sync patterns with: >
|
||||
==============================================================================
|
||||
11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list*
|
||||
|
||||
This commands lists all the syntax items: >
|
||||
This command lists all the syntax items: >
|
||||
|
||||
:sy[ntax] [list]
|
||||
|
||||
@@ -3845,8 +3900,8 @@ guifg={color-name} *highlight-guifg*
|
||||
guibg={color-name} *highlight-guibg*
|
||||
guisp={color-name} *highlight-guisp*
|
||||
These give the foreground (guifg), background (guibg) and special
|
||||
(guisp) color to use in the GUI. "guisp" is used for underline and
|
||||
undercurl. There are a few special names:
|
||||
(guisp) color to use in the GUI. "guisp" is used for undercurl.
|
||||
There are a few special names:
|
||||
NONE no color (transparent)
|
||||
bg use normal background color
|
||||
background use normal background color
|
||||
@@ -3913,8 +3968,12 @@ SignColumn column where |signs| are displayed
|
||||
IncSearch 'incsearch' highlighting; also used for the text replaced with
|
||||
":s///c"
|
||||
*hl-LineNr*
|
||||
LineNr line number for ":number" and ":#" commands, and when 'number'
|
||||
LineNr Line number for ":number" and ":#" commands, and when 'number'
|
||||
option is set.
|
||||
*hl-MatchParen*
|
||||
MatchParen The character under the cursor or just before it, if it
|
||||
is a paired bracket, and its match. |pi_paren.txt|
|
||||
|
||||
*hl-ModeMsg*
|
||||
ModeMsg 'showmode' message (e.g., "-- INSERT --")
|
||||
*hl-MoreMsg*
|
||||
@@ -3926,6 +3985,14 @@ NonText '~' and '@' at the end of the window, characters from
|
||||
doesn't fit at the end of the line).
|
||||
*hl-Normal*
|
||||
Normal normal text
|
||||
*hl-Pmenu*
|
||||
Pmenu Popup menu: normal item.
|
||||
*hl-PmenuSel*
|
||||
PmenuSel Popup menu: selected item.
|
||||
*hl-PmenuSbar*
|
||||
PmenuSbar Popup menu: scrollbar.
|
||||
*hl-PmenuThumb*
|
||||
PmenuThumb Popup menu: Thumb of the scrollbar.
|
||||
*hl-Question*
|
||||
Question |hit-enter| prompt and yes/no questions
|
||||
*hl-Search*
|
||||
@@ -3957,6 +4024,12 @@ StatusLine status line of current window
|
||||
StatusLineNC status lines of not-current windows
|
||||
Note: if this is equal to "StatusLine" Vim will use "^^^" in
|
||||
the status line of the current window.
|
||||
*hl-TabLine*
|
||||
TabLine tab pages line, not active tab page label
|
||||
*hl-TabLineFill*
|
||||
TabLineFill tab pages line, where there are no labels
|
||||
*hl-TabLineSel*
|
||||
TabLineSel tab pages line, active tab page label
|
||||
*hl-Title*
|
||||
Title titles for output from ":set all", ":autocmd" etc.
|
||||
*hl-Visual*
|
||||
@@ -3969,7 +4042,7 @@ WarningMsg warning messages
|
||||
*hl-WildMenu*
|
||||
WildMenu current match in 'wildmenu' completion
|
||||
|
||||
*hl-User1* *hl-User1..9*
|
||||
*hl-User1* *hl-User1..9* *hl-User9*
|
||||
The 'statusline' syntax allows the use of 9 different highlights in the
|
||||
statusline and ruler (via 'rulerformat'). The names are User1 to User9.
|
||||
|
||||
@@ -4194,9 +4267,8 @@ But for using 16 colors in an rxvt these should work with terminfo: >
|
||||
<
|
||||
*colortest.vim*
|
||||
To test your color setup, a file has been included in the Vim distribution.
|
||||
To use it, execute these commands: >
|
||||
:e $VIMRUNTIME/syntax/colortest.vim
|
||||
:so %
|
||||
To use it, execute this command: >
|
||||
:runtime syntax/colortest.vim
|
||||
|
||||
Some versions of xterm (and other terminals, like the Linux console) can
|
||||
output lighter foreground colors, even though the number of colors is defined
|
||||
|
||||
346
runtime/doc/tabpage.txt
Normal file
346
runtime/doc/tabpage.txt
Normal file
@@ -0,0 +1,346 @@
|
||||
*tabpage.txt* For Vim version 7.0aa. Last change: 2006 Mar 03
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
Editing with windows in multiple tab pages. *tab-page* *tabpage*
|
||||
|
||||
The commands which have been added to use multiple tab pages are explained
|
||||
here. Additionally, there are explanations for commands that work differently
|
||||
when used in combination with more than one tab page.
|
||||
|
||||
1. Introduction |tab-page-intro|
|
||||
2. Commands |tab-page-commands|
|
||||
3. Other items |tab-page-other|
|
||||
4. Setting 'tabline' |setting-tabline|
|
||||
5. Setting 'guitablabel' |setting-guitablabel|
|
||||
|
||||
{Vi does not have any of these commands}
|
||||
{not able to use multiple tab pages when the |+windows| feature was disabled
|
||||
at compile time}
|
||||
|
||||
==============================================================================
|
||||
1. Introduction *tab-page-intro*
|
||||
|
||||
A tab page holds one or more windows. You can easily switch between tab
|
||||
pages, so that you have several collections of windows to work on different
|
||||
things.
|
||||
|
||||
Usually you will see a list of labels at the top of the Vim window, one for
|
||||
each tab page. With the mouse you can click on the label to jump to that tab
|
||||
page. There are other ways to move between tab pages, see below.
|
||||
|
||||
Most commands work only in the current tab page. That includes the |CTRL-W|
|
||||
commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier).
|
||||
The commands that are aware of other tab pages than the current one are
|
||||
mentioned below.
|
||||
|
||||
Tabs are also a nice way to edit a buffer temporarily without changing the
|
||||
current window layout. Open a new tab page, do whatever you want to do and
|
||||
close the tab page.
|
||||
|
||||
==============================================================================
|
||||
2. Commands *tab-page-commands*
|
||||
|
||||
OPENING A NEW TAB PAGE:
|
||||
|
||||
When starting Vim "vim -p filename ..." opens each file argument in a separate
|
||||
tab page (up to 'tabpagemax'). |-p|
|
||||
|
||||
A double click with the mouse in the non-GUI tab pages line opens a new, empty
|
||||
tab page. It is placed left of the position of the click. The first click
|
||||
may select another tab page first, causing an extra screen update.
|
||||
|
||||
In the GUI tab pages line you can use the right mouse button to open menu.
|
||||
|tabline-menu|.
|
||||
|
||||
:tabe[dit] *:tabe* *:tabedit* *:tabnew*
|
||||
:tabnew Open a new tab page with an empty window, after the current
|
||||
tab page.
|
||||
|
||||
:tabe[dit] [++opt] [+cmd] {file}
|
||||
:tabnew [++opt] [+cmd] {file}
|
||||
Open a new tab page and edit {file}, like with |:edit|.
|
||||
|
||||
:tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind*
|
||||
Open a new tab page and edit {file} in 'path', like with
|
||||
|:find|.
|
||||
{not available when the |+file_in_path| feature was disabled
|
||||
at compile time}
|
||||
|
||||
:[count]tab {cmd} *:tab*
|
||||
Execute {cmd} and when it opens a new window open a new tab
|
||||
page instead. Doesn't work for |:diffsplit| or |:diffpatch|.
|
||||
When [count] is omitted the tab page appears after the current
|
||||
one. When [count] is specified the new tab page comes after
|
||||
tab page [count]. Use ":0tab cmd" to get the new tab page as
|
||||
the first one. Examples: >
|
||||
:tab split " opens current buffer in new tab page
|
||||
:tab help gt " opens tab page with help for "gt"
|
||||
|
||||
|
||||
CLOSING A TAB PAGE:
|
||||
|
||||
Closing the last window of a tab page closes the tab page too, unless there is
|
||||
only one tab page.
|
||||
|
||||
Using the mouse: If the tab page line is displayed you can click in the "X" at
|
||||
the top right to close the current tab page. A custom |'tabline'| may show
|
||||
something else.
|
||||
|
||||
*:tabc* *:tabclose*
|
||||
:tabc[lose][!] Close current tab page.
|
||||
This command fails when:
|
||||
- There is only one tab page on the screen. *E784*
|
||||
- When 'hidden' is not set, [!] is not used, a buffer has
|
||||
changes, and there is no other window on this buffer.
|
||||
Changes to the buffer are not written and won't get lost, so
|
||||
this is a "safe" command.
|
||||
|
||||
:tabc[lose][!] {count}
|
||||
Close tab page {count}. Fails in the same way as ':tabclose"
|
||||
above.
|
||||
|
||||
*:tabo* *:tabonly*
|
||||
:tabo[nly][!] Close all other tab pages.
|
||||
When the 'hidden' option is set, all buffers in closed windows
|
||||
become hidden.
|
||||
When 'hidden' is not set, and the 'autowrite' option is set,
|
||||
modified buffers are written. Otherwise, windows that have
|
||||
buffers that are modified are not removed, unless the [!] is
|
||||
given, then they become hidden. But modified buffers are
|
||||
never abandoned, so changes cannot get lost.
|
||||
|
||||
|
||||
SWITCHING TO ANOTHER TAB PAGE:
|
||||
|
||||
Using the mouse: If the tab page line is displayed you can click in a tab page
|
||||
label to switch to that tab page. Click where there is no label to go to the
|
||||
next tab page. |'tabline'|
|
||||
|
||||
:tabn[ext] *:tabn* *:tabnext* *gt*
|
||||
gt Go to the next tab page. Wraps around from the last to the
|
||||
first one.
|
||||
|
||||
:tabn[ext] {count}
|
||||
{count}gt Go to tab page {count}. The first tab page has number one.
|
||||
|
||||
|
||||
:tabp[revious] *:tabp* *:tabprevious* *gT*
|
||||
:tabN[ext] *:tabN* *:tabNext*
|
||||
gT Go to the previous tab page. Wraps around from the first one
|
||||
to the last one.
|
||||
|
||||
:tabp[revious] {count}
|
||||
:tabN[ext] {count}
|
||||
{count}gT Go {count} tab pages back. Wraps around from the first one
|
||||
to the last one.
|
||||
|
||||
:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind*
|
||||
:tabfir[st] Go to the first tab page.
|
||||
|
||||
*:tabl* *:tablast*
|
||||
:tabl[ast] Go to the last tab page.
|
||||
|
||||
|
||||
Other commands:
|
||||
*:tabs*
|
||||
:tabs List the tab pages and the windows they contain.
|
||||
Shows a ">" for the current window.
|
||||
Shows a "+" for modified buffers.
|
||||
|
||||
|
||||
REORDERING TAB PAGES:
|
||||
|
||||
*:tabm* *:tabmove*
|
||||
:tabmove N Move the current tab page to after tab page N. Use zero to
|
||||
make the current tab page the first one. Without N the tab
|
||||
page is made the last one.
|
||||
|
||||
|
||||
LOOPING OVER TAB PAGES:
|
||||
|
||||
*:tabd* *:tabdo*
|
||||
:tabd[o] {cmd} Execute {cmd} in each tab page.
|
||||
It works like doing this: >
|
||||
:tabfirst
|
||||
:{cmd}
|
||||
:tabnext
|
||||
:{cmd}
|
||||
etc.
|
||||
< This only operates in the current window of each tab page.
|
||||
When an error is detected on one tab page, further tab pages
|
||||
will not be visited.
|
||||
The last tab page (or where an error occurred) becomes the
|
||||
current tab page.
|
||||
{cmd} can contain '|' to concatenate several commands.
|
||||
{cmd} must not open or close tab pages or reorder them.
|
||||
{not in Vi} {not available when compiled without the
|
||||
|+listcmds| feature}
|
||||
Also see |:windo|, |:argdo| and |:bufdo|.
|
||||
|
||||
==============================================================================
|
||||
3. Other items *tab-page-other*
|
||||
|
||||
*tabline-menu*
|
||||
The GUI tab pages line has a popup menu. It is accessed with a right click.
|
||||
The entries are:
|
||||
Close Close the tab page under the mouse pointer. The
|
||||
current one if there is no label under the mouse
|
||||
pointer.
|
||||
New Tab Open a tab page, editing an empty buffer. It appears
|
||||
to the left of the mouse pointer.
|
||||
Open Tab... Like "New Tab" and additionaly use a file selector to
|
||||
select a file to edit.
|
||||
|
||||
Diff mode works per tab page. You can see the diffs between several files
|
||||
within one tab page. Other tab pages can show differences between other
|
||||
files.
|
||||
|
||||
The TabLeave and TabEnter autocommand events can be used to do something when
|
||||
switching from one tab page to another. The exact order depends on what you
|
||||
are doing. When creating a new tab page this works as if you create a new
|
||||
window on the same buffer and then edit another buffer. Thus ":tabnew"
|
||||
triggers:
|
||||
WinLeave leave current window
|
||||
TabLeave leave current tab page
|
||||
TabEnter enter new tab page
|
||||
WinEnter enter window in new tab page
|
||||
BufLeave leave current buffer
|
||||
BufEnter enter new empty buffer
|
||||
|
||||
When switching to another tab page the order is:
|
||||
BufLeave
|
||||
WinLeave
|
||||
TabLeave
|
||||
TabEnter
|
||||
WinEnter
|
||||
BufEnter
|
||||
|
||||
==============================================================================
|
||||
4. Setting 'tabline' *setting-tabline*
|
||||
|
||||
The 'tabline' option specifies what the line with tab pages labels looks like.
|
||||
It is only used when there is no GUI tab line.
|
||||
|
||||
You can use the 'showtabline' option to specify when you want the line with
|
||||
tab page labels to appear: never, when there is more than one tab page or
|
||||
always.
|
||||
|
||||
The highlighting of the tab pages line is set with the groups TabLine
|
||||
TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill|
|
||||
|
||||
The 'tabline' option allows you to define your preferred way to tab pages
|
||||
labels. This isn't easy, thus an example will be given here.
|
||||
|
||||
For basics see the 'statusline' option. The same items can be used in the
|
||||
'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and
|
||||
|tabpagewinnr()| functions are useful.
|
||||
|
||||
Since the number of tab labels will vary, you need to use an expresion for the
|
||||
whole option. Something like: >
|
||||
:set tabline=%!MyTabLine()
|
||||
|
||||
Then define the MyTabLine() function to list all the tab pages labels. A
|
||||
convenient method is to split it in two parts: First go over all the tab
|
||||
pages and define labels for them. Then get the label for each tab page. >
|
||||
|
||||
function MyTabLine()
|
||||
let s = ''
|
||||
for i in range(tabpagenr('$'))
|
||||
" select the highlighting
|
||||
if i + 1 == tabpagenr()
|
||||
let s .= '%#TabLineSel#'
|
||||
else
|
||||
let s .= '%#TabLine#'
|
||||
endif
|
||||
|
||||
" set the tab page number (for mouse clicks)
|
||||
let s .= '%' . (i + 1) . 'T'
|
||||
|
||||
" the label is made by MyTabLabel()
|
||||
let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
|
||||
endfor
|
||||
|
||||
" after the last tab fill with TabLineFill and reset tab page nr
|
||||
let s .= '%#TabLineFill#%T'
|
||||
|
||||
" right-align the label to close the current tab page
|
||||
if tabpagenr('$') > 1
|
||||
let s .= '%=%#TabLine#%999Xclose'
|
||||
endif
|
||||
|
||||
return s
|
||||
endfunction
|
||||
|
||||
Now the MyTabLabel() function is called for each tab page to get its label. >
|
||||
|
||||
function MyTabLabel(n)
|
||||
let buflist = tabpagebuflist(a:n)
|
||||
let winnr = tabpagewinnr(a:n)
|
||||
return bufname(buflist[winnr - 1])
|
||||
endfunction
|
||||
|
||||
This is just a simplistic example that results in a tab pages line that
|
||||
resembles the default, but without adding a + for a modified buffer or
|
||||
trunctating the names. You will want to reduce the width of labels in a
|
||||
clever way when there is not enough room. Check the 'columns' option for the
|
||||
space available.
|
||||
|
||||
==============================================================================
|
||||
5. Setting 'guitablabel' *setting-guitablabel*
|
||||
|
||||
When the GUI tab pages line is displayed, 'guitablabel' can be used to
|
||||
specify the label to display for each tab page. Unlike 'tabline', which
|
||||
specifies the whole tab pages line at once, 'guitablabel' is used for each
|
||||
label separately.
|
||||
|
||||
See the 'statusline' option for the format of the value.
|
||||
|
||||
The "%N" item can be used for the current tab page number. The |v:lnum|
|
||||
variable is also set to this number when 'guitablabel' is evaluated.
|
||||
The items that use a file name refer to the current window of the tab page.
|
||||
|
||||
Note that syntax highlighting is not used for 'guitablabel'. The %T and %X
|
||||
items are also ignored.
|
||||
|
||||
A simple example that puts the tab page number and the buffer name in the
|
||||
label: >
|
||||
:set guitablabel=%N\ %f
|
||||
|
||||
An example that resembles the default: Show the number of windows in the tab
|
||||
page and a '+' if there is a modifed buffer: >
|
||||
|
||||
function GuiTabLabel()
|
||||
let label = ''
|
||||
let bufnrlist = tabpagebuflist(v:lnum)
|
||||
|
||||
" Add '+' if one of the buffers in the tab page is modified
|
||||
for bufnr in bufnrlist
|
||||
if getbufvar(bufnr, "&modified")
|
||||
let label = '+'
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
|
||||
" Append the number of windows in the tab page if more than one
|
||||
let wincount = tabpagewinnr(v:lnum, '$')
|
||||
if wincount > 1
|
||||
let label .= wincount
|
||||
endif
|
||||
if label != ''
|
||||
let label .= ' '
|
||||
endif
|
||||
|
||||
" Append the buffer name
|
||||
return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
|
||||
endfunction
|
||||
|
||||
set guitablabel=%{GuiTabLabel()}
|
||||
|
||||
Note that the function must be defined before setting the option, otherwise
|
||||
you get an error message for the function not being known.
|
||||
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
351
runtime/doc/tags
351
runtime/doc/tags
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
*tagsrch.txt* For Vim version 7.0aa. Last change: 2005 Jul 12
|
||||
*tagsrch.txt* For Vim version 7.0aa. Last change: 2006 Feb 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -36,19 +36,26 @@ An easy way back is with the CTRL-T command. Also read about the tag stack
|
||||
below.
|
||||
|
||||
*:ta* *:tag* *E426* *E429*
|
||||
:ta[g][!] {ident} Jump to the definition of {ident}, using the
|
||||
:[count]ta[g][!] {ident}
|
||||
Jump to the definition of {ident}, using the
|
||||
information in the tags file(s). Put {ident} in the
|
||||
tag stack. See |tag-!| for [!].
|
||||
{ident} can be a regexp pattern, see |tag-regexp|.
|
||||
When there are several matching tags for {ident}, the
|
||||
first one is jumped to. |:tnext|.
|
||||
When there are several matching tags for {ident}, jump
|
||||
to the [count] one. When [count] is omitted the
|
||||
first one is jumped to. See |tag-matchlist| for
|
||||
jumping to other matching tags.
|
||||
|
||||
g<LeftMouse> *g<LeftMouse>*
|
||||
<C-LeftMouse> *<C-LeftMouse>* *CTRL-]*
|
||||
CTRL-] Jump to the definition of the keyword under the
|
||||
cursor. Same as ":tag {ident}", where {ident} is the
|
||||
keyword under or after cursor. {Vi: identifier after
|
||||
the cursor}
|
||||
keyword under or after cursor.
|
||||
When there are several matching tags for {ident}, jump
|
||||
to the [count] one. When no [count] is given the
|
||||
first one is jumped to. See |tag-matchlist| for
|
||||
jumping to other matching tags.
|
||||
{Vi: identifier after the cursor}
|
||||
|
||||
*v_CTRL-]*
|
||||
{Visual}CTRL-] Same as ":tag {ident}", where {ident} is the text that
|
||||
@@ -257,6 +264,17 @@ g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag".
|
||||
:tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. {not
|
||||
in Vi}
|
||||
|
||||
*:lt* *:ltag*
|
||||
:lt[ag][!] [ident] Jump to tag [ident] and add the matching tags to a new
|
||||
location list for the current window. [ident] can be
|
||||
a regexp pattern, see |tag-regexp|. When [ident] is
|
||||
not given, the last tag name from the tag stack is
|
||||
used. The search pattern to locate the tag line is
|
||||
prefixed with "\V" to escape all the special
|
||||
characters (very nomagic). The location list showing
|
||||
the matching tags is independent of the tag stack.
|
||||
See |tag-!| for [!].
|
||||
{not in Vi}
|
||||
|
||||
When there is no other message, Vim shows which matching tag has been jumped
|
||||
to, and the number of matching tags: >
|
||||
@@ -275,6 +293,7 @@ skipped and the next matching tag is used. Vim reports this, to notify you of
|
||||
missing files. When the end of the list of matches has been reached, an error
|
||||
message is given.
|
||||
|
||||
*tag-preview*
|
||||
The tag match list can also be used in the preview window. The commands are
|
||||
the same as above, with a "p" prepended.
|
||||
{not available when compiled without the |+quickfix| feature}
|
||||
@@ -440,7 +459,7 @@ directory. If it is not found there, then the file "/home/user/commontags"
|
||||
will be searched for the tag.
|
||||
|
||||
This can be switched off by including the 'd' flag in 'cpoptions', to make
|
||||
it Vi compatible. "./tags" will than be the tags file in the current
|
||||
it Vi compatible. "./tags" will then be the tags file in the current
|
||||
directory, instead of the tags file in the directory where the current file
|
||||
is.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*term.txt* For Vim version 7.0aa. Last change: 2005 Aug 27
|
||||
*term.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -208,7 +208,7 @@ starts with CSI, it assumes that the terminal is in 8-bit mode and will
|
||||
convert all key sequences to their 8-bit variants.
|
||||
|
||||
==============================================================================
|
||||
2. Terminal options *terminal-options* *E436*
|
||||
2. Terminal options *terminal-options* *termcap-options* *E436*
|
||||
|
||||
The terminal options can be set just like normal options. But they are not
|
||||
shown with the ":set all" command. Instead use ":set termcap".
|
||||
@@ -684,6 +684,7 @@ event position selection change action ~
|
||||
<MiddleMouse> yes if not active no put
|
||||
<MiddleMouse> yes if active no yank and put
|
||||
<RightMouse> yes start or extend yes
|
||||
<A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>*
|
||||
<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>*
|
||||
<C-RightMouse> no no change no "CTRL-T"
|
||||
<RightDrag> yes extend no *<RightDrag>*
|
||||
@@ -699,6 +700,7 @@ event position selection change action ~
|
||||
<LeftRelease> yes start or extend (1) no like CTRL-O (1)
|
||||
<MiddleMouse> no (cannot be active) no put register
|
||||
<RightMouse> yes start or extend yes like CTRL-O
|
||||
<A-RightMouse> yes start or extend blockw. yes
|
||||
<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2)
|
||||
<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T"
|
||||
|
||||
@@ -713,12 +715,14 @@ Normal Mode:
|
||||
event position selection change action ~
|
||||
cursor window ~
|
||||
<S-LeftMouse> yes start or extend (1) no
|
||||
<A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>*
|
||||
<RightMouse> no popup menu no
|
||||
|
||||
Insert or Replace Mode:
|
||||
event position selection change action ~
|
||||
cursor window ~
|
||||
<S-LeftMouse> yes start or extend (1) no like CTRL-O (1)
|
||||
<A-LeftMouse> yes start or extend blockw. no
|
||||
<RightMouse> no popup menu no
|
||||
|
||||
(1) only if mouse pointer moved since press
|
||||
@@ -744,6 +748,12 @@ Visual area to be extended. When 'mousemodel' is "popup", the left button has
|
||||
to be used while keeping the shift key pressed. When clicking in a window
|
||||
which is editing another buffer, the Visual or Select mode is stopped.
|
||||
|
||||
In Normal, Visual and Select mode clicking the right mouse button with the alt
|
||||
key pressed causes the Visual area to become blockwise. When 'mousemodel is
|
||||
"popup" the left button has to be used with the alt key. Note that this won't
|
||||
work on systems where the window manager uses the mouse when the alt key is
|
||||
pressed (it may move the window).
|
||||
|
||||
*double-click*
|
||||
Double, triple and quadruple clicks are supported when the GUI is active,
|
||||
for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*tips.txt* For Vim version 7.0aa. Last change: 2005 Apr 19
|
||||
*tips.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -24,6 +24,7 @@ Compressing the help files |gzip-helpfile|
|
||||
Hex editing |hex-editing|
|
||||
Executing shell commands in a window |shell-window|
|
||||
Using <> notation in autocommands |autocmd-<>|
|
||||
Highlighting matching parens |match-parens|
|
||||
|
||||
==============================================================================
|
||||
Editing C programs *C-editing*
|
||||
@@ -443,4 +444,65 @@ forget to double the number of existing backslashes and put a backslash before
|
||||
For a real buffer menu, user functions should be used (see |:function|), but
|
||||
then the <> notation isn't used, which defeats using it as an example here.
|
||||
|
||||
==============================================================================
|
||||
Highlighting matching parens *match-parens*
|
||||
|
||||
This example shows the use of a few advanced tricks:
|
||||
- using the |CursorMoved| autocommand event
|
||||
- using |searchpairpos()| to find a matching paren
|
||||
- using |synID()| to detect whether the cursor is in a string or comment
|
||||
- using |:match| to highlight something
|
||||
- using a |pattern| to match a specific position in the file.
|
||||
|
||||
This should be put in a Vim script file, since it uses script-local variables.
|
||||
It skips matches in strings or comments, unless the cursor started in string
|
||||
or comment. This requires syntax highlighting.
|
||||
|
||||
A slightly more advanced version is used in the |matchparen| plugin.
|
||||
>
|
||||
let s:paren_hl_on = 0
|
||||
function s:Highlight_Matching_Paren()
|
||||
if s:paren_hl_on
|
||||
match none
|
||||
let s:paren_hl_on = 0
|
||||
endif
|
||||
|
||||
let c_lnum = line('.')
|
||||
let c_col = col('.')
|
||||
|
||||
let c = getline(c_lnum)[c_col - 1]
|
||||
let plist = split(&matchpairs, ':\|,')
|
||||
let i = index(plist, c)
|
||||
if i < 0
|
||||
return
|
||||
endif
|
||||
if i % 2 == 0
|
||||
let s_flags = 'nW'
|
||||
let c2 = plist[i + 1]
|
||||
else
|
||||
let s_flags = 'nbW'
|
||||
let c2 = c
|
||||
let c = plist[i - 1]
|
||||
endif
|
||||
if c == '['
|
||||
let c = '\['
|
||||
let c2 = '\]'
|
||||
endif
|
||||
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
|
||||
\ '=~? "string\\|comment"'
|
||||
execute 'if' s_skip '| let s_skip = 0 | endif'
|
||||
|
||||
let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip)
|
||||
|
||||
if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
|
||||
exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col .
|
||||
\ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
|
||||
let s:paren_hl_on = 1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren()
|
||||
autocmd InsertEnter * match none
|
||||
<
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.0aa. Last change: 2005 Sep 07
|
||||
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 03
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -30,19 +30,76 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
When ":vimgrep" lists filenames while searching they should be shortened.
|
||||
Silence messages for decompressing?
|
||||
Function to get and restore window position? Including topline, column
|
||||
offset, etc. Use dictionary to store the info?
|
||||
|
||||
ccomplete:
|
||||
- need list of tags files used in 'tags'.
|
||||
Crash with X command server (Ciaran McCreesh).
|
||||
|
||||
Ctags still hasn't included the patch. Darren is looking for someone to do
|
||||
maintanance. Is there another solution?
|
||||
|
||||
spelling:
|
||||
- Also use the spelling dictionary for dictionary completion.
|
||||
-> proper case compare against pattern, also for multi-byte
|
||||
- Using KEEPCASE flag still allows all-upper word, docs say it doesn't.
|
||||
Don't allow it, because there is no other way to do this.
|
||||
- Use runtime/cleanadd script to cleanup .add files. When to invoke it?
|
||||
After deleting a word with "zw" and some timestamp difference perhaps?
|
||||
Store it as spell/cleanadd.vim.
|
||||
- Have "zg" and "zw" report the file that was modified. (Marvin Renich)
|
||||
- Add a command like "zg" that selects one of the files in 'spellfile'.
|
||||
- Add a "zug" command that undoes "zg"? Deletes the good word instead of
|
||||
adding a bad word like "zw" would. Use "zuw" to undo "zw"? (Antonio
|
||||
Colombo)
|
||||
|
||||
- Rename COMPOUNDFLAGS to COMPOUNDPATTERN or COMPOUNDRULE?
|
||||
Hunspell now uses COMPOUND with a count.
|
||||
- Check out Hunspell 1.1.3.
|
||||
what does MAXNGRAMSUGS do?
|
||||
See announcement (Nemeth, 5 jan)
|
||||
is COMPLEXPREFIXES necessary now that we have flags for affixes?
|
||||
- Look into hungarian dictionary:
|
||||
http://magyarispell.sourceforge.net/hu_HU-1.0.tar.gz
|
||||
- Support flags on a suffix. Used for second level affixes, rare and
|
||||
nocomp. The flags may also be used for compounding. Default is an OR
|
||||
mechanism with the flags of the word. Adding "compset" on the affixes
|
||||
means the compound flags of the word are not used.
|
||||
Instead of "SFX a 0 add/FLAGS ." we could use "SFX a 0 add . /FLAGS" (or
|
||||
support both).
|
||||
- When compounding Hunspell doesn't allow affixes inside the compound word,
|
||||
only before and after it. COMPOUNDPERMITFLAG can be used to allow it.
|
||||
Check Myspell and Aspell if they also work this way.
|
||||
Thus a word + suffix needs a flag that it can't be used with a following
|
||||
compound, and word + prefix can't be after another word in a compound.
|
||||
- Implement COMPOUNDFORBIDFLAG .
|
||||
- Support breakpoint character <20> 0xb7 and ignore it? Makes it possible to use
|
||||
same wordlist for hyphenation.
|
||||
|
||||
Is it possible to keep the command-line window open? Would actually work like
|
||||
closing it, executing the command and re-opening it (at the same position).
|
||||
|
||||
Mac unicode patch (Da Woon Jung):
|
||||
- configuration option for platform: i386, ppc or both.
|
||||
Use __LITTLE_ENDIAN__ to test for current platform.
|
||||
- selecting proportional font breaks display
|
||||
- UTF-8 text causes display problems. Font replacement causes this.
|
||||
- Command-key mappings do not work. (Alan Schmitt)
|
||||
- Add default key mappings for the command key (Alan Schmitt)
|
||||
use http://macvim.org/OSX/files/gvimrc
|
||||
- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
|
||||
(Alan Schmitt)
|
||||
|
||||
Win32: Use the free downloadable compiler 7.1. Figure out how to do debugging
|
||||
(with Agide?) and describe it. (George Reilly)
|
||||
Patch to add a few flags to search(). (Benji Fisher, Nov 29, doc update Dec 1)
|
||||
|
||||
Win32: Use the free downloadable compiler 7.1 (2003). Figure out how to do
|
||||
debugging (with Agide?) and describe it. (George Reilly)
|
||||
Try out using the free MS compiler and debugger, using Make_mvc.mak.
|
||||
Try using Visual C++ Express 2005. (Ilya Bobir Dec 20)
|
||||
Disadvantage: Annoying warning messages, requires ..._NO_DEPRECATE, this
|
||||
is not a standard compiler.
|
||||
|
||||
Win32: Check that installer puts menu items in "all users" dir when possible,
|
||||
not administrator dir.
|
||||
|
||||
Autoload:
|
||||
- Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
|
||||
@@ -55,56 +112,49 @@ Autoload:
|
||||
helpfile doc/myscript.txt
|
||||
For the "helpfile" item ":helptags" is run.
|
||||
|
||||
Add ":smap", Select mode mapping? Otherwise: ":sunmap", so that Visual mode
|
||||
mappings for normal keys can be removed from Select mode.
|
||||
|
||||
When expanding on the command line, recognize shell commands, such as ":!cmd".
|
||||
Complete command names by searching in $PATH. When completing file names
|
||||
escape special characters ";&<>(){}". (Adri Verhoef)
|
||||
|
||||
Are there more commands where v:swapcommand can be set to something useful?
|
||||
|
||||
Put autocommand event names in a hashtable for faster lookup?
|
||||
|
||||
Awaiting response:
|
||||
- Win32: tearoff menu window should have a scrollbar when it's taller than
|
||||
the screen.
|
||||
- mblen(NULL, 0) also in Vim 6.3?
|
||||
|
||||
|
||||
PLANNED FOR VERSION 7.0:
|
||||
CONSIDERED FOR VERSION 7.0:
|
||||
|
||||
- Occult completion: Understands the programming language and finds matches
|
||||
that make sense. Esp. members of classes/structs.
|
||||
|
||||
It's not much different from other Insert-mode completion, use the same
|
||||
mechanism. Use CTRL-X CTRL-O and 'occultfunc'. Set 'occultfunc' in the
|
||||
filetype plugin, define the function in the autoload directory.
|
||||
|
||||
Separately develop the completion logic and the UI. When adding UI stuff
|
||||
make it work for all completion methods.
|
||||
Omni completion:
|
||||
ccomplete:
|
||||
- Finding out if an item has members (to add '.' or '->') requires a grep
|
||||
in the tags files, that is very slow. Is there another solution? At
|
||||
least stop at the first match.
|
||||
Could build the list of items for each structure in memory. Is that
|
||||
faster? Not using too much memory?
|
||||
- For C add tag "kind" field to each match?
|
||||
- Flickering because of syntax highlighting redrawing further lines.
|
||||
- When a typedef or struct is local to a file only use it in that file?
|
||||
|
||||
UI:
|
||||
- At first: use 'wildmenu' kind of thing.
|
||||
- Nicer: Display the list of choices right under the place where they
|
||||
would be inserted in a kind of meny (use scrollbar when there are many
|
||||
alternatives).
|
||||
- Add an "auto" mode: after typing a character (or string) completion is
|
||||
done for the longest common string. plugin defines the possible
|
||||
characters/strings. (Martin Stubenschrott)
|
||||
And/or: Provide a function to popup the menu, so that an insert mode
|
||||
mapping can start it (with a specific selection).
|
||||
- GUI implementation of the popup menu.
|
||||
- Show "info" from a match in preview window.
|
||||
Or use one window for matches, another for context/info (Doug Kearns,
|
||||
2005 Sep 13)
|
||||
- Ideas on: http://www.wholetomato.com/
|
||||
|
||||
Completion logic:
|
||||
Use runtime/autoload/{filetype}complete.vim files.
|
||||
|
||||
For a simple name can complete like with CTRL-N.
|
||||
get list of IDs from the tagfile?
|
||||
For struct or class add "." or "->"?
|
||||
|
||||
After a reference to a struct or class suggest members.
|
||||
Recognizing "var.mem" and 'var->mem" is easy.
|
||||
How to get the type of "var"?
|
||||
tags file doesn't give type of typedef! E.g., oparg_T is
|
||||
listed with "^} oparg_T;$"
|
||||
mlcscope may do it, but it's not very portable.
|
||||
http://www.exptools.com/cscope
|
||||
How to get the members of that type?
|
||||
tags file has struct: and class: fields
|
||||
|
||||
In function arguments suggest variables of expected type.
|
||||
|
||||
List of completions is a Dictionary with items:
|
||||
complist[0]['text'] = completion text
|
||||
complist[0]['type'] = type of completion (e.g. function, var, arg)
|
||||
complist[0]['help'] = help text (e.g. function declaration)
|
||||
complist[0]['helpfunc'] = function that shows help text
|
||||
etc.
|
||||
|
||||
Ideas from others:
|
||||
http://www.vim.org/scripts/script.php?script_id=747
|
||||
http://sourceforge.net/projects/insenvim
|
||||
@@ -117,10 +167,6 @@ PLANNED FOR VERSION 7.0:
|
||||
Uses ctags to find the info:
|
||||
ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
|
||||
|
||||
UI: popup menu with list of alternatives, icon to indicate type
|
||||
optional popup window with info about selected alternative
|
||||
Unrelated settings are changed (e.g. 'mousemodel').
|
||||
|
||||
www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
|
||||
IComplete: http://www.vim.org/scripts/script.php?script_id=1265
|
||||
and http://stud4.tuwien.ac.at/~e0125672/icomplete/
|
||||
@@ -128,16 +174,12 @@ PLANNED FOR VERSION 7.0:
|
||||
Ivan Villanueva has something for Java.
|
||||
Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
|
||||
Ideas from the Vim 7 BOF at SANE:
|
||||
- It's not possible to have one solution for all languages. Design an
|
||||
interface for completion plugins. The matches can be done in a
|
||||
Vim-script list.
|
||||
- For interpreted languages, use the interpreter to obtain information.
|
||||
Should work for Java (Eclipse does this), Python, Tcl, etc.
|
||||
Richard Emberson mentioned working on an interface to Java.
|
||||
- Check Readline for its completion interface.
|
||||
- Use ctags for other languages. Writing a file could trigger running
|
||||
ctags, merging the tags of the changed file.
|
||||
"Visual Assist" http://www.wholetomato.com/products:
|
||||
Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
|
||||
|
||||
- Pre-expand abbreviations, show which abbrevs would match?
|
||||
@@ -155,35 +197,21 @@ PLANNED FOR VERSION 7.0:
|
||||
Only difficult thing: When going back in time, how to find the previous
|
||||
text state in the tree?
|
||||
Show the list of changes in a window to be able to select a version?
|
||||
Also: See ":e" as a change operation, find the changes and add them to the
|
||||
undo info. Needed for when an external tool changes the file.
|
||||
- PERSISTENT UNDO: store undo in a file.
|
||||
Use timestamps, so that a version a certain time ago can be found and info
|
||||
before some time/date can be flushed. 'undopersist' gives maximum time to
|
||||
keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and
|
||||
extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
|
||||
7 Support WINDOW TABS. Works like several pages, each with their own
|
||||
split windows.
|
||||
In Emacs these are called frames. Could also call them "pages".
|
||||
Use the name of the first buffer in the tab (ignoring the help window,
|
||||
unless it's the only one). Add a number for the window count.
|
||||
First make it work on the console. Use a line of text with highlighting.
|
||||
Then add GUI Tabs for some systems.
|
||||
Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6.
|
||||
Simple patch for GTK by Luis M (nov 7).
|
||||
Don't forget to provide an "X" to close a tab.
|
||||
Implementation: keep the list of windows as-is. When switching to another
|
||||
tab make the buffers in the current windows hidden, save the window
|
||||
layout, buildup the other window layout and fill with buffers.
|
||||
Need to be able to search the windows in inactive tabs, e.g. for the
|
||||
quickfix window.
|
||||
Use "1gt" - "99gt" to switch to a tab?
|
||||
- EMBEDDING: Make it possible to run Vim inside a window of another program.
|
||||
For Xwindows this can be done with XReparentWindow().
|
||||
For GTK Neil Bird has a patch to use Vim like a widget.
|
||||
- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block
|
||||
can be selected with CTRL-V. Allow '$' (end of line) for col2.
|
||||
- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye,
|
||||
assisted by Mikolaj Machowski. Should work like an IDE. Try to keep it
|
||||
generic. Also found here: http://skawina.eu.org/mikolaj/vimgdb
|
||||
- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye.
|
||||
Should work like an IDE. Try to keep it generic. Now found here:
|
||||
http://clewn.sf.net.
|
||||
And the idevim plugin/script.
|
||||
To be able to start the debugger from inside Vim: For GUI run a program
|
||||
with a netbeans connection; for console: start a program that splits the
|
||||
@@ -197,6 +225,8 @@ PLANNED FOR VERSION 7.0:
|
||||
implement part in Java and then connect to Vim. Some hints from Alexandru
|
||||
Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR
|
||||
198 standard http://www.jcp.org/en/jsr/detail?id=198.
|
||||
Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine)
|
||||
Plugin that uses a terminal emulator: http://vimplugin.sf.net
|
||||
- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
|
||||
Especially when using the scrollbar. Typing a cursor-movement command
|
||||
scrolls back to where the cursor is.
|
||||
@@ -205,7 +235,8 @@ PLANNED FOR VERSION 7.0:
|
||||
to avoid a performance penalty (esp. for string options)?
|
||||
8 Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
|
||||
Add the 'maxcombining' option to set the nr. of composing characters.
|
||||
At the same time support more colors (use two bytes when necessary).
|
||||
At the same time support 32 bit Unicode characters?
|
||||
8 "ga" should show all composing characters, also if there are more than 2.
|
||||
8 Searching for a composing character by itself should work. Perhaps "."
|
||||
with a composing char should work too.
|
||||
- Add a few more things to 'diffopt': "horizontal", "vertical",
|
||||
@@ -220,7 +251,7 @@ PLANNED FOR VERSION 7.0:
|
||||
- Running a shell command from the GUI still has limitations. Look into how
|
||||
the Vim shell project can help: http://vimshell.wana.at
|
||||
- Displaying size of Visual area: use 24-33 column display.
|
||||
When selecting multiple lines, up to about a screenfull, also count the
|
||||
When selecting multiple lines, up to about a screenful, also count the
|
||||
characters.
|
||||
- Mac: Unicode input and display (Eckehard Berns, 2004 June 27)
|
||||
Other patch from Da Woon Jung, 2005 Jan 16.
|
||||
@@ -249,6 +280,8 @@ PLANNED FOR VERSION 7.0:
|
||||
taglist() can be used.
|
||||
|
||||
Adjust src/main.aap for installing manpages like in Makefile.
|
||||
And for generating Vim.app for the Mac.
|
||||
Install spell files with src/main.aap.
|
||||
|
||||
When editing a file with both utf-8 and latin1 text Vim always falls back to
|
||||
latin1. Add a command to convert the latin1 characters to utf-8?
|
||||
@@ -291,26 +324,7 @@ Win32: In the generated batch files, use $VIMRUNTIME if it's set. Examples by
|
||||
Mathias Michaelis (2004 Sep 6)
|
||||
Also place vimtutor.bat in %windir%?
|
||||
|
||||
Add gui_mch_browsedir() for Motif, KDE and Mac OS/X.
|
||||
|
||||
Add extra list of file locations. A bit like the quickfix list, but there is
|
||||
one per window. Can be used with:
|
||||
:ltag list of matching tags, like :tselect
|
||||
Commands to use the location list:
|
||||
:lnext next location
|
||||
:lprevious :lNext previous location
|
||||
:lnfile location in next file
|
||||
:lNfile :lpfile location in previous file
|
||||
:lrewind :lfirst first location
|
||||
:llast last location
|
||||
:ll [N] go to location N (current one if N omitted)
|
||||
:lwindow open window with locations (separate from quickfix window)
|
||||
:lopen open window with locations
|
||||
:lclose close window with locations
|
||||
:llist list locations
|
||||
:lfile read locations from file using 'errorformat'
|
||||
:lgetfile idem, don't jump to first one
|
||||
:lbuffer idem, from current buffer.
|
||||
Add gui_mch_browsedir() for Motif, Mac OS/X.
|
||||
|
||||
HTML indenting can be slow, find out why. Any way to do some kind of
|
||||
profiling for Vim script? At least add a function to get the current time in
|
||||
@@ -332,6 +346,11 @@ Add more tests for all new functionality in Vim 7. Especially new functions.
|
||||
|
||||
Updated Ruby interface. (Ryan Paul)
|
||||
|
||||
'errorformat' docs are a bit unclear. Suggestions by Charles Campbell (2006
|
||||
Jan 6)
|
||||
Add a flag to check for a match with the next item first? Helps for
|
||||
continuation lines that may contain just about anything.
|
||||
|
||||
Awaiting updated patches:
|
||||
--- awaiting updated patch ---
|
||||
8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
|
||||
@@ -341,9 +360,11 @@ Awaiting updated patches:
|
||||
7 Completion of network shares, patch by Yasuhiro Matsumoto.
|
||||
Update 2004 Sep 6.
|
||||
How does this work? Missing comments.
|
||||
gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
|
||||
- gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
|
||||
Update 2004 Sep 10
|
||||
More docs. Search in 'runtimepath'?
|
||||
Another patch from Edward L. Fox (2005 Nov 24)
|
||||
Search in 'runtimepath'?
|
||||
More docs about how to use this.
|
||||
How to get the messages into the .po files?
|
||||
--- did not respond (yet) --
|
||||
- Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
|
||||
@@ -385,7 +406,7 @@ Awaiting updated patches:
|
||||
7 When 'rightleft' is set, the search pattern should be displayed right
|
||||
to left as well? See patch of Dec 26. (Nadim Shaikli)
|
||||
8 Lock all used memory so that it doesn't get swapped to disk (uncrypted).
|
||||
Patch by Jason Holt, 2003 May 23.
|
||||
Patch by Jason Holt, 2003 May 23. Uses mlock.
|
||||
7 Support a stronger encryption. Jason Holt implemented AES (May 6 2003).
|
||||
7 Add ! register, for shell commands. (patch from Grenie)
|
||||
8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's
|
||||
@@ -504,14 +525,6 @@ GTK+ GUI known bugs:
|
||||
when it is longer than 4000 characters. Works OK from gvim to gvim and
|
||||
vim to vim. Pasting through xterm (using the shift key) also works.
|
||||
It starts working after GTK gvim loses the selection and gains it again.
|
||||
7 DND doesn't work with KDE (also with GTK 1).
|
||||
|
||||
KDE GUI known bugs:
|
||||
- There is no active maintenance and "yzis" is supposed to replace it.
|
||||
- With the default 'guifont' value bold text differs in size from normal
|
||||
text, causing the display to be messed up.
|
||||
- Error messages when starting up. The "tip of the day" box is empty.
|
||||
- Encoding of menu items needs to be converted. (Yasuhiro Matsumoto)
|
||||
|
||||
Win32 GUI known bugs:
|
||||
8 On Windows 98 the unicows library is needed to support functions with UCS2
|
||||
@@ -579,8 +592,7 @@ Win32 GUI known bugs:
|
||||
Opposite of 'linespace': 'columnspace'.
|
||||
7 At the hit-enter prompt scrolling now no longer works. Need to use the
|
||||
keyboard to get around this. Pretend <CR> was hit when the user tries to
|
||||
scroll? Need to be able to get out of hit-enter prompt with the mouse
|
||||
anyway.
|
||||
scroll?
|
||||
7 Scrollbar width doesn't change when selecting other windows appearance.
|
||||
Also background color of Toolbar and rectangle below vert. scrollbar.
|
||||
7 "!start /min cmd" should run in a minimized window, instead of using
|
||||
@@ -782,7 +794,16 @@ MSDOS, OS/2 and Win32:
|
||||
8 OS/2: Add Extended Attributes support and define HAVE_ACL.
|
||||
8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt,
|
||||
writing uses "foo.txt". Should obtain the real file name.
|
||||
8 Should $USERPROFILE be used instead of $HOMEDRIVE/$HOMEPATH?
|
||||
8 Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH? No, but it's
|
||||
a good fallback, thus use:
|
||||
$HOME
|
||||
$HOMEDRIVE$HOMEPATH
|
||||
SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE);
|
||||
$USERPROFILE
|
||||
SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE);
|
||||
$ALLUSERSPROFILE
|
||||
$SYSTEMDRIVE\
|
||||
C:\
|
||||
8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have
|
||||
special keys for these. Should use modifier + key.
|
||||
8 Win32 console: caps-lock makes non-alpha keys work like with shift.
|
||||
@@ -794,8 +815,6 @@ MSDOS, OS/2 and Win32:
|
||||
8 When editing a file on a Samba server, case might matter. ":e file"
|
||||
followed by ":e FILE" will edit "file" again, even though "FILE" might be
|
||||
another one. Set last used name in buflist_new()? Fix do_ecmd(), etc.
|
||||
8 ":mksession" generates a "cd" command where "aa\#bb" means directory "#bb"
|
||||
in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
|
||||
8 When a buffer is editing a file like "ftp://mach/file", which is not going
|
||||
to be used like a normal file name, don't change the slashes to
|
||||
backslashes. (Ronald Hoellwarth)
|
||||
@@ -986,8 +1005,6 @@ Macintosh:
|
||||
one.
|
||||
7 When 'showbreak' is set, the amount of space a Tab occupies changes.
|
||||
Should work like 'showbreak' is inserted without changing the Tabs.
|
||||
7 When there is a "help.txt" window in a session file, restoring that
|
||||
session will not get the "LOCAL ADDITIONS" back.
|
||||
7 When 'mousefocus' is set and switching to another window with a typed
|
||||
command, the mouse pointer may be moved to a part of the window that's
|
||||
covered by another window and we lose focus. Only move in the y
|
||||
@@ -1317,23 +1334,38 @@ User Friendlier:
|
||||
7 When Vim detects a file is being edited elsewhere and it's a gvim session
|
||||
of the same user it should offer a "Raise" button, so that the other gvim
|
||||
window can be displayed. (Eduard)
|
||||
8 Support saving and restoring session for X windows? It should work to do
|
||||
":mksession" and use "-S fname" for the restart command. The
|
||||
gui_x11_wm_protocol_handler() already takes care of the rest.
|
||||
global_event_filter() for GTK.
|
||||
|
||||
|
||||
Tab pages:
|
||||
9 GUI implementation for the tab pages line for other systems.
|
||||
8 Make GUI menu in tab pages line configurable. Like the popup menu.
|
||||
8 tab pages in the session file, if "tabpages" in 'sessionoptions'
|
||||
8 :tabmove +N move tab page N pages forward
|
||||
8 :tabmove -N move tab page N pages backward
|
||||
7 :tabdup duplicate the tab with all its windows.
|
||||
7 Option to put tab line at the left or right? Need an option to specify
|
||||
its witdh. It's like a separate window with ":tabs" output.
|
||||
7 Add local variables for each tab page?
|
||||
8 Add local options for each tab page? E.g., 'diffopt' could differ between
|
||||
tab pages.
|
||||
7 Add local highlighting for each tab page?
|
||||
|
||||
|
||||
Spell checking:
|
||||
9 Work together with OpenOffice.org to update the wordlists. (Adri Verhoef,
|
||||
Aad Nales) Setup vim-spell maillist?
|
||||
- suggestion for "KG" to "kg" when it's keepcase.
|
||||
- Compound word is accepted if nr of words is <= COMPOUNDMAX OR nr of
|
||||
syllables <= COMPOUNDSYLMAX. Specify using AND in the affix file?
|
||||
- COMPOUNDMAX -> COMPOUNDWORDMAX?
|
||||
- Support flags on a suffix. Used for second level affixes. The flags may
|
||||
also be used for compounding. Default is an OR mechanism with the flags
|
||||
of the word. Adding "compset" on the affixes means the compound flags of
|
||||
the word are not used. Instead of "SFX a 0 add/FLAGS ." we could use "SFX
|
||||
a 0 add . /FLAGS" (or support both).
|
||||
- NEEDCOMPOUND also used for affix? Or use "needcomp" after affix?
|
||||
- NEEDCOMPOUND also used for affix? Or is this called ONLYINCOMPOUND now?
|
||||
Or is ONLYINCOMPOUND only for inside a compound, not at start or end?
|
||||
- Do we need a flag for the rule that when compounding is done the following
|
||||
word doesn't have a capital after a word character, even for Onecap words?
|
||||
- New hunspell home page: http://hunspell.sourceforge.net/
|
||||
- Version 1.1.0 is out now, look into that.
|
||||
- Lots of code depends on LANG, that isn't right. Enable each mechanism
|
||||
in the affix file separately.
|
||||
- Example with compounding dash is bad, gets in the way of setting
|
||||
@@ -1341,6 +1373,8 @@ Spell checking:
|
||||
- PSEUDOROOT == NEEDAFFIX
|
||||
- COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word
|
||||
Or use COMPOUNDED2, COMPOUNDED3, etc.
|
||||
8 Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
|
||||
obtain). But new Myspell wordlist will come (Hagen)
|
||||
- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then
|
||||
the word must also have a suffix marked with the CIRCUMFIX flag. It's a
|
||||
bit primitive, since only one flag is used, which doesn't allow matching
|
||||
@@ -1354,8 +1388,8 @@ Spell checking:
|
||||
- Add flags to count extra syllables in a word. SYLLABLEADD1 SYLLABLEADD2,
|
||||
etc.? Or make it possible to specify the syllable count of a word
|
||||
directly, e.g., after another slash: /abc/3
|
||||
- MORPHO item in affix file: ignore morphological fields after word and
|
||||
affix.
|
||||
- MORPHO item in affix file: ignore TAB and morphological field after
|
||||
word/flags and affix.
|
||||
- Implement multiple flags for compound words and CMP item?
|
||||
Await comments from other spell checking authors.
|
||||
- Also see tklspell: http://tkltrans.sourceforge.net/
|
||||
@@ -1363,7 +1397,6 @@ Spell checking:
|
||||
syntax items (to add @Spell).
|
||||
Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn
|
||||
cluster" but change the contains list directly for matching syntax items.
|
||||
8 Install spell files with src/main.aap.
|
||||
- References: MySpell library (in OpenOffice.org).
|
||||
http://spellchecker.mozdev.org/source.html
|
||||
http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
|
||||
@@ -1371,30 +1404,27 @@ Spell checking:
|
||||
8 Make "en-rare" spell file? Ask Charles Campbell.
|
||||
8 The English dictionaries for different regions are not consistent in their
|
||||
use of words with a dash.
|
||||
8 Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
|
||||
obtain). But new Myspell wordlist will come (Hagen)
|
||||
7 Insert mode completion mechanism that uses the spell word lists.
|
||||
8 Add hl groups to 'spelllang'?
|
||||
:set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
|
||||
More complicated: Regions with different languages? E.g., comments
|
||||
in English, strings in German (po file).
|
||||
8 Implement compound words when it works for Myspell. Current idea has the
|
||||
problem that "foo/X" always allows "foofoo", there is no way to specify a
|
||||
word can only be at the start or end, or that only certain words combine.
|
||||
|
||||
|
||||
Diff mode:
|
||||
8 Use diff mode to show the changes made in a buffer (compared to the file).
|
||||
Use an unnamed buffer, like doing:
|
||||
new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
|
||||
Also show difference with the file when editing started? Should show what
|
||||
can be undone. (Tom Popovich)
|
||||
7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also
|
||||
move it in other diff'ed buffers, so that CTRL-W commands go to the same
|
||||
location.
|
||||
|
||||
|
||||
Folding:
|
||||
(commands still available: zg zG zI zJ zK zp zP zq zQ zV zw zW zy zY;
|
||||
secondary: zB zS zT zZ)
|
||||
(commands still available: zI zJ zK zp zP zq zQ zV zy zY;
|
||||
secondary: zB zS zT zZ, z=)
|
||||
8 Add "z/" and "z?" for searching in not folded text only.
|
||||
8 Add different highlighting for a fold line depending on the fold level.
|
||||
(Noel Henson)
|
||||
@@ -1419,11 +1449,12 @@ Folding:
|
||||
- 'foldmethod' "textobject": fold on sections and paragraph text objects.
|
||||
- Add 'hidecomment' option: don't display comments in /* */ and after //.
|
||||
Or is the conceal patch from Vince Negri a more generic solution?
|
||||
- "zu": undo change in manual fold. "zU" redo change in manual fold. How to
|
||||
implement this?
|
||||
- "zuf": undo change in manual fold. "zUf" redo change in manual fold. How
|
||||
to implement this?
|
||||
- "zJ" command: add the line or fold below the fold in the fold under the
|
||||
cursor.
|
||||
- 'foldmethod' "syntax": "fold=3": set fold level for a region.
|
||||
- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or
|
||||
match.
|
||||
- Apply a new foldlevel to a range of lines. (Steve Litt)
|
||||
8 Have some way to restrict commands to not folded text. Also commands like
|
||||
searches.
|
||||
@@ -1457,7 +1488,6 @@ Multi-byte characters:
|
||||
8 Should add test for using various commands with multi-byte characters.
|
||||
8 'infercase' doesn't work with multi-byte characters.
|
||||
8 toupper() function doesn't handle byte count changes.
|
||||
8 "ga" should show all composing characters, also if there are more than 2.
|
||||
7 When searching, should order of composing characters be ignored?
|
||||
8 Should implement 'delcombine' for command line editing.
|
||||
8 Detect overlong UTF-8 sequences and handle them like illegal bytes.
|
||||
@@ -1553,7 +1583,7 @@ Syntax highlighting:
|
||||
"%" match. :syntax nomatch cMatchError (,{,[,),},] [contained]
|
||||
8 Highlight the text between two matching parens (e.g., with a grey
|
||||
background) when on one of the parens or in between them.
|
||||
Or highlight the matching paren when the cursor is on one.
|
||||
Option for the matchparen plugin?
|
||||
8 Add a command to jump to the next character highlighted with "Error".
|
||||
8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
|
||||
sequences. Add remark in docs that :if 'term' == "term-name" should be
|
||||
@@ -1564,6 +1594,11 @@ Syntax highlighting:
|
||||
re-insert the [] if possible.
|
||||
8 Make it possible to use color of text for Visual highlight group (like for
|
||||
the Cursor).
|
||||
8 It would be useful to make the highlight group name an expression. Then
|
||||
when there is a match, the expression would be evaluated to find out what
|
||||
highlight group to use. Could be used to check if the shell used in a
|
||||
password file appears in /etc/shells. (Nikolai Weibull)
|
||||
syn match =s:checkShell(v:match) contained 'pattern'
|
||||
8 Make it possible to only highlight a sub-expression of a match. Like
|
||||
using "\1" in a ":s" command.
|
||||
8 Support for deleting syntax items:
|
||||
@@ -1683,13 +1718,6 @@ Built-in script language:
|
||||
Alternative: Support packages. {package-name}:{function-name}().
|
||||
Packages are loaded automatically when first used, from
|
||||
$VIMRUNTIME/packages (or use a search path).
|
||||
7 Add the markclear() function to delete a mark in another buffer. Charles
|
||||
Campbell (2004 Jan 9)
|
||||
http://mysite.verizon.net/astronaut/vim/index.html#Patch
|
||||
Implement setmark(markname, lnum [, col [, filename]]) instead?
|
||||
When "lnum" is zero delete the mark.
|
||||
When "filename" has no wildcards and there is no matching buffer, add
|
||||
the buffer (unlisted).
|
||||
7 Pre-parse or compile Vim scripts into a bytecode.
|
||||
1. Put the bytecode with the original script, with an ":if
|
||||
has('bytecode')" around it, so that it's only used with a Vim that
|
||||
@@ -1725,7 +1753,6 @@ Built-in script language:
|
||||
filecopy(from, to) Copy a file
|
||||
shorten(fname) shorten a file name, like home_replace()
|
||||
perl(cmd) call Perl and return string
|
||||
input(prompt, complete) like input() but do specified completion
|
||||
inputrl() like input() but right-to-left
|
||||
virtualmode() add argument to obtain whether "$" was used in
|
||||
Visual block mode.
|
||||
@@ -1742,17 +1769,16 @@ Built-in script language:
|
||||
specified in any way? To be able to jump to the last edited file.
|
||||
8 Pass the executable name to the Vim scripts in some way. As v:argv0?
|
||||
8 Add command arguments with three dashes, passed on to Vim scripts.
|
||||
8 When starting to source a vim script, delete all functions that it has
|
||||
previously defined? Avoids using ":fun!" all the time.
|
||||
7 Add optional arguments to user functions:
|
||||
:func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
|
||||
6 User functions: Functions local to buffer "b:func()"?
|
||||
8 Add ":let var[{expr}] = {expr}". When past the end of "var" just ignore.
|
||||
8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var"
|
||||
just ignore.
|
||||
8 The "= register should be writable, if followed by the name of a variable,
|
||||
option or environment variable.
|
||||
8 ":let &option" should list the value of the option.
|
||||
7 Add synIDlist(), making the whole list of syntax items on the
|
||||
stack available (separated with '\n').
|
||||
7 Add synIDlist(), making the whole list of syntax items on the syntax stack
|
||||
available as a List.
|
||||
8 Add autocommand-event for when a variable is changed:
|
||||
:au VarChanged {varname} {commands}
|
||||
8 Add "has("gui_capable")", to check if the GUI can be started.
|
||||
@@ -1771,7 +1797,6 @@ Built-in script language:
|
||||
7 Add function to generate unique number (date in milliseconds).
|
||||
7 Automatically load a function from a file when it is called. Need an
|
||||
option for the search path. (Sekera)
|
||||
7 Persistent variables: "p:var"; stored in viminfo file and sessions files.
|
||||
|
||||
|
||||
Robustness:
|
||||
@@ -1787,8 +1812,6 @@ Robustness:
|
||||
Performance:
|
||||
7 For strings up to 3 bytes don't allocate memory, use v_list itself as a
|
||||
character array. Use VAR_SSTRING (short string).
|
||||
8 Loading plugins takes startup time. Only load the part that is used to
|
||||
trigger the rest, and load the rest when it's needed?
|
||||
8 Turn b_syn_ic and b_syn_containedin into b_syn_flags.
|
||||
9 Loading menu.vim still takes quite a bit of time. How to make it faster?
|
||||
8 in_id_list() takes much time for syntax highlighting. Cache the result?
|
||||
@@ -1857,7 +1880,7 @@ Performance:
|
||||
- highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and
|
||||
"~/vim/test/lockup.pl".
|
||||
- loading a syntax file to highlight all words not from a dictionary.
|
||||
- editing a vim script with syntax highlighting on (loading vim.vim).
|
||||
- editing a Vim script with syntax highlighting on (loading vim.vim).
|
||||
7 Screen updating can be further improved by only redrawing lines that were
|
||||
changed (and lines after them, when syntax highlighting was used, and it
|
||||
changed).
|
||||
@@ -1918,7 +1941,7 @@ Messages:
|
||||
typing, error messages must be switched back on.
|
||||
Also a flag to ignore error messages for shell commands (for mappings).
|
||||
- Option to set time for emsg() sleep. Interrupt sleep when key is typed?
|
||||
sleep before second message?
|
||||
Sleep before second message?
|
||||
8 In Ex silent mode or when reading commands from a file, what exactly is
|
||||
not printed and what is? Check ":print", ":set all", ":args", ":vers",
|
||||
etc. At least there should be no prompt. (Smulders) And don't clear the
|
||||
@@ -1999,14 +2022,12 @@ Shared libraries:
|
||||
|
||||
|
||||
Tags:
|
||||
8 Add a function that returns the line in the tags file for a matching tag.
|
||||
Can be used to extract more info (class name, inheritance, etc.) (Rico
|
||||
Hendriks)
|
||||
7 Count before CTRL-]: jump to N'th match
|
||||
7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
|
||||
number of possible matches? Check tags file for an item that has members.
|
||||
(Flemming Madsen)
|
||||
8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
|
||||
8 When output of ":tselect" is long, getting the more-prompt, should be able
|
||||
to type the tag number directly.
|
||||
7 Add a tag-select window. Works like ":cwindow". (Michal Malecki)
|
||||
7 Add the possibility to use the "-t {tag}" argument multiple times. Open a
|
||||
window for each tag.
|
||||
7 Make output of ":tselect" a bit nicer. Use highlighting?
|
||||
@@ -2167,30 +2188,25 @@ Autocommands:
|
||||
8 Add ScriptReadCmd event: used to load remote Vim scripts, e.g.
|
||||
"vim -u http://mach/path/vimrc".
|
||||
7 Add TagJump event: do something after jumping to a tag.
|
||||
8 Add "TagJumpFile" autocommand: When jumping to another file for a tag.
|
||||
Can be used to open "main.c.gz" when "main.c" isn't found.
|
||||
8 Use another option than 'updatetime' for the CursorHold event. The two
|
||||
things are unrelated for the user (but the implementation is more
|
||||
difficult).
|
||||
8 Also trigger CursorHold in Insert mode?
|
||||
7 Add autocommand event for when a buffer cannot be abandoned. So that user
|
||||
can define the action taking (autowrite, dialog, fail) based on the kind
|
||||
of file. (Yakov Lerner) Or is BufLeave sufficient?
|
||||
8 Can't use ":normal" in CursorHold autocommands. Make the CursorHold event
|
||||
insert a special key code, and call the autocommand functions from a
|
||||
higher level, so that vgetc() isn't used recursively.
|
||||
8 Autocommands should not change registers. And marks? And the jumplist?
|
||||
And anything else?
|
||||
8 Add an event like CursorHold that is triggered repeatedly, not just once
|
||||
after typing something.
|
||||
7 Add autocommand event for when a buffer cannot be abandoned. So that the
|
||||
user can define the action taking (autowrite, dialog, fail) based on the
|
||||
kind of file. (Yakov Lerner) Or is BufLeave sufficient?
|
||||
8 Autocommand for when modified files have been found, when getting input
|
||||
focus again (e.g., FileChangedFocus).
|
||||
Check when: getting focus, jumping to another buffer, ...
|
||||
8 Autocommands should not change registers. And marks? And the jumplist?
|
||||
And anything else? Add a command to save and restore these things.
|
||||
8 Add autocommands, user functions and user commands to ":mkvimrc".
|
||||
8 Add "TagJumpFile" autocommand: When jumping to another file for a tag.
|
||||
Can be used to open "main.c.gz" when "main.c" isn't found.
|
||||
6 Add KeymapChanged event, so that the effects of a different keymap can be
|
||||
handled (e.g., other font) (Ron Aaron)
|
||||
7 Add a way to skip an autocommand if going from one *.c file to another *.c
|
||||
file.
|
||||
7 When trying to open a directory, don't load the file but trigger an
|
||||
autocommand event OpenDirectory.
|
||||
7 When trying to open a directory, trigger an OpenDirectory event.
|
||||
7 Add file type in front of file pattern: <d> for directory, <l> for link,
|
||||
<x> for executable, etc. <&xxx> for Risc OS. With commas to separate
|
||||
alternatives. The autocommand is only executed when both the file type
|
||||
@@ -2207,7 +2223,6 @@ Autocommands:
|
||||
- Add events to autocommands:
|
||||
Error - When an error happens
|
||||
NormalEnter - Entering Normal mode
|
||||
InsertEnter - Entering Insert mode
|
||||
ReplaceEnter - Entering Replace mode
|
||||
CmdEnter - Entering Cmdline mode
|
||||
VisualEnter - Entering Visual mode
|
||||
@@ -2239,8 +2254,7 @@ Autocommands:
|
||||
that marks can be updated. HierAssist has patch to add
|
||||
BufChangePre, BufChangePost and RevertBuf. (Shah)
|
||||
WinResized - When a window has been resized
|
||||
- Add autocommand to be executed every so many seconds? For writing the
|
||||
file now and then ('autosave').
|
||||
- Write the file now and then ('autosave'):
|
||||
*'autosave'* *'as'* *'noautosave'* *'noas'*
|
||||
'autosave' 'aw' number (default 0)
|
||||
Automatically write the current buffer to file N seconds after the
|
||||
@@ -2512,7 +2526,7 @@ Insert mode:
|
||||
continuation lines. Allows changing 'tabstop' without messing up the
|
||||
indents.
|
||||
And/or: Add option to copy indent as-is, without changing spaces to tabs.
|
||||
also for 'autoindent'. 'keeptabs': when set don't change the tabs and
|
||||
Also for 'autoindent'. 'keeptabs': when set don't change the tabs and
|
||||
spaces used for indent, when the indent remains the same or increases.
|
||||
|
||||
|
||||
@@ -2595,7 +2609,7 @@ Visual mode:
|
||||
behave like 'scrolloff' is one, so that the text scrolls when the pointer
|
||||
is in the top line.
|
||||
8 When using "I" or "A" in Visual block mode, short lines do not get the new
|
||||
text. make it possible to add the text to short lines too, with padding
|
||||
text. Make it possible to add the text to short lines too, with padding
|
||||
where needed.
|
||||
7 With a Visual block selected, "2x" deletes a block of double the width,
|
||||
"3y" yanks a block of triple width, etc.
|
||||
@@ -2745,8 +2759,9 @@ Incsearch:
|
||||
|
||||
|
||||
Searching:
|
||||
7 Add "g/" and "gb" to search for a pattern in the Visually selected text?
|
||||
8 Add "g/" and "gb" to search for a pattern in the Visually selected text?
|
||||
"g?" is already used for rot13.
|
||||
Can use "g/" in Normal mode, uses the '< to '> area.
|
||||
8 Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)". \@g stands
|
||||
for "go recursive here" and \@( \) marks the recursive part.
|
||||
Perl does it this way:
|
||||
@@ -2987,20 +3002,27 @@ Modelines:
|
||||
or not. Same for .exrc in local dir.
|
||||
|
||||
|
||||
Options:
|
||||
8 Make ":mksession" store buffer-specific options for the specific buffer.
|
||||
Sessions:
|
||||
8 DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means
|
||||
directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
|
||||
7 When there is a "help.txt" window in a session file, restoring that
|
||||
session will not get the "LOCAL ADDITIONS" back.
|
||||
8 With ":mksession" always store the 'sessionoptions' option, even when
|
||||
"options" isn't in it. (St-Amant)
|
||||
7 ":with option=value | command": temporarily set an option value and
|
||||
restore it after the command has executed.
|
||||
7 Setting an option always sets "w_set_curswant", while this is only
|
||||
required for a few options. Only do it for those options to avoid the
|
||||
side effect.
|
||||
8 When using ":mksession", also store a command to reset all options to
|
||||
their default value, before setting the options that are not at their
|
||||
default value.
|
||||
7 With ":mksession" also store the tag stack and jump history. (Michal
|
||||
Malecki)
|
||||
7 Persistent variables: "p:var"; stored in viminfo file and sessions files.
|
||||
|
||||
|
||||
Options:
|
||||
7 ":with option=value | command": temporarily set an option value and
|
||||
restore it after the command has executed.
|
||||
7 Setting an option always sets "w_set_curswant", while this is only
|
||||
required for a few options. Only do it for those options to avoid the
|
||||
side effect.
|
||||
8 Make "old" number options that really give a number of effects into string
|
||||
options that are a comma separated list. The old number values should
|
||||
also be supported.
|
||||
@@ -3010,8 +3032,6 @@ Options:
|
||||
7 There is 'titleold', why is there no 'iconold'? (Chazelas)
|
||||
7 Make 'scrolloff' a global-local option, so that it can be different in the
|
||||
quickfix window, for example. (Gary Holloway)
|
||||
7 Add plugins for formatting. Should be able to make a choice depending on
|
||||
the language of a file (English/Korean/Japanese/etc.).
|
||||
|
||||
|
||||
External commands:
|
||||
@@ -3207,14 +3227,20 @@ Debug mode:
|
||||
|
||||
|
||||
Various improvements:
|
||||
7 Add plugins for formatting? Should be able to make a choice depending on
|
||||
the language of a file (English/Korean/Japanese/etc.).
|
||||
Setting the 'langformat' option to "chinese" would load the
|
||||
"format/chinese.vim" plugin.
|
||||
The plugin would set 'formatexpr' and define the function being called.
|
||||
Edward L. Fox explains how it should be done for most Asian languages.
|
||||
(2005 Nov 24)
|
||||
7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next
|
||||
("vatv").
|
||||
7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
|
||||
next <li>, ]< to next </li>, [< to previous </li>.
|
||||
8 Add ":rename" command: rename the file of the current buffer and rename
|
||||
the buffer. Buffer may be modified.
|
||||
- Perhaps ":cexpr" could read errors from a list?
|
||||
Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
|
||||
- Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
|
||||
Govindachar)
|
||||
6 In the quickfix window statusline add the command used to get the list of
|
||||
errors, e.g. ":make foo", ":grep something *.c".
|
||||
@@ -3278,6 +3304,7 @@ Various improvements:
|
||||
8 Add "g^E" and "g^Y", to scroll a screen-full line up and down.
|
||||
6 Add ":timer" command, to set a command to be executed at a certain
|
||||
interval, or once after some time has elapsed. (Aaron)
|
||||
Perhaps an autocommand event like CursorHold is better?
|
||||
8 Add ":confirm" handling in open_exfile(), for when file already exists.
|
||||
8 When quitting with changed files, make the dialog list the changed file
|
||||
and allow "write all", "discard all", "write some". The last one would
|
||||
@@ -3338,8 +3365,6 @@ Various improvements:
|
||||
paragraph. Both start a new paragraph on any indent change.
|
||||
7 Add a way to define an item list with a pattern in 'formatoptions'. The
|
||||
'n' flag doesn't work for "6.3" or "6a.".
|
||||
8 Add 'formatexpr' option: Used for formatting operator "gq" instead of the
|
||||
builtin formatting or 'formatprg'.
|
||||
8 Allow using a trailing space to signal a paragraph that continues on the
|
||||
next line (MIME text/plain; format=flowed, RFC 2646). Can be used for
|
||||
continuous formatting. Could use 'autoformat' option, which specifies a
|
||||
@@ -3642,6 +3667,11 @@ From vile:
|
||||
|
||||
|
||||
Far future and "big" extensions:
|
||||
- Instead of using a Makefile and autoconf, use a simple shell script to
|
||||
find the C compiler and do everything with C code. Translate something
|
||||
like an Aap recipe and configure.in to C. Avoids depending on Python,
|
||||
thus will work everywhere. With batch file to find the C compiler it
|
||||
would also work on MS-Windows.
|
||||
- Make it easy to setup Vim for groups of users: novice vi users, novice
|
||||
Vim users, C programmers, xterm users, GUI users,...
|
||||
- Change layout of blocks in swap file: Text at the start, with '\n' in
|
||||
@@ -3679,6 +3709,8 @@ Far future and "big" extensions:
|
||||
are reflected in each Vim immediately. Could work with local files but
|
||||
also over the internet. See http://www.codingmonkeys.de/subethaedit/.
|
||||
|
||||
When using "do" or ":diffget" in a buffer with changes in every line an extra
|
||||
empty line would appear.
|
||||
|
||||
vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl:
|
||||
vim: set fo+=n :
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*uganda.txt* For Vim version 7.0aa. Last change: 2005 Aug 12
|
||||
*uganda.txt* For Vim version 7.0aa. Last change: 2005 Oct 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -211,9 +211,26 @@ Sending money:
|
||||
Check the ICCF web site for the latest information! See |iccf| for the URL.
|
||||
|
||||
|
||||
USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They
|
||||
USA: The methods mentioned below can be used. Alternatively, you
|
||||
can send a check to the Nehemiah Group Outreach Society
|
||||
(NGOS). This will reduce banking costs and you can get an IRS
|
||||
tax receipt. The NGOS forwards the funds directly to the
|
||||
Kibaale project in Uganda. Checks must be made payable to
|
||||
NGOS but please note on the check "donation Kibaale". Mail
|
||||
checks to:
|
||||
NGOS
|
||||
P.O. Box 50862
|
||||
Indianapolis, IN 45250
|
||||
Questions regarding the Nehemiah Group Outreach Society (NGOS)
|
||||
should be directed to: Ross deMerchant, Executive Director -
|
||||
r.demerchant AT sbcglobal DOT net.
|
||||
For sponsoring a child contact KCF in Canada (see below) and
|
||||
send the check to NGOS in Indianapolis.
|
||||
|
||||
Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They
|
||||
take care of the Canadian sponsors for the children in
|
||||
Kibaale. You can send them a one time donation directly.
|
||||
Kibaale. KCF forwards 100% of the money to the project in
|
||||
Uganda. You can send them a one time donation directly.
|
||||
Please send me a note so that I know what has been donated
|
||||
because of Vim. Ask KCF for information about sponsorship.
|
||||
Kibaale Children's Fund c/o Pacific Academy
|
||||
@@ -223,12 +240,10 @@ USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They
|
||||
Phone: 604-581-5353
|
||||
If you make a donation to Kibaale Children's Fund (KCF) you
|
||||
will receive a tax receipt which can be submitted with your
|
||||
tax return (under the Free Trade Agreement tax receipts issued
|
||||
by an organization registered in Canada are fully accepted by
|
||||
the IRS in the USA, with a few conditions).
|
||||
tax return.
|
||||
|
||||
Holland: Transfer to the account of "Stichting ICCF Holland" in Venlo.
|
||||
This will allow for tax deduction (if you live in Holland)!
|
||||
This will allow for tax deduction if you live in Holland.
|
||||
Postbank, nr. 4548774
|
||||
|
||||
Germany: It is possible to make donations that allow for a tax return.
|
||||
@@ -252,7 +267,7 @@ Credit Card: You can use PayPal to send money with a Credit card. This is
|
||||
https://www.paypal.com/affil/pal=Bram%40iccf-holland.org
|
||||
The e-mail address for sending the money to is:
|
||||
Bram@iccf-holland.org
|
||||
For amounts above 400 Euro ($500) sending a cheque is
|
||||
For amounts above 400 Euro ($500) sending a check is
|
||||
preferred.
|
||||
|
||||
Others: Transfer to one of these accounts if possible:
|
||||
@@ -264,11 +279,11 @@ Others: Transfer to one of these accounts if possible:
|
||||
Rabobank Venlo, account 3765.05.117
|
||||
Swift code: RABO NL 2U
|
||||
under the name "Bram Moolenaar", Venlo
|
||||
Otherwise, send a cheque in euro or US dollars to the address
|
||||
Otherwise, send a check in euro or US dollars to the address
|
||||
below. Minimal amount: $70 (my bank does not accept smaller
|
||||
amounts for foreign cheques, sorry)
|
||||
amounts for foreign check, sorry)
|
||||
|
||||
Address to send cheques to:
|
||||
Address to send checks to:
|
||||
stichting ICCF Holland
|
||||
Bram Moolenaar
|
||||
Clematisstraat 30
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*undo.txt* For Vim version 7.0aa. Last change: 2003 Oct 21
|
||||
*undo.txt* For Vim version 7.0aa. Last change: 2006 Feb 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -10,7 +10,8 @@ The basics are explained in section |02.5| of the user manual.
|
||||
|
||||
1. Undo and redo commands |undo-commands|
|
||||
2. Two ways of undo |undo-two-ways|
|
||||
3. Remarks about undo |undo-remarks|
|
||||
3. Undo blocks |undo-blocks|
|
||||
4. Remarks about undo |undo-remarks|
|
||||
|
||||
==============================================================================
|
||||
1. Undo and redo commands *undo-commands*
|
||||
@@ -72,7 +73,36 @@ Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this
|
||||
words, in Nvi it does nothing.
|
||||
|
||||
==============================================================================
|
||||
3. Remarks about undo *undo-remarks*
|
||||
3. Undo blocks *undo-blocks*
|
||||
|
||||
One undo command normally undoes a typed command, no matter how many changes
|
||||
that command makes. This sequence of undo-able changes forms an undo block.
|
||||
Thus if the typed key(s) call a function, all the commands in the function are
|
||||
undone together.
|
||||
|
||||
If you want to write a function or script that doesn't create a new undoable
|
||||
change but joins in with the previous change use this command:
|
||||
|
||||
*:undoj* *:undojoin*
|
||||
:undoj[oin] Join further changes with the previous undo block.
|
||||
Warning: Use with care, it may prevent the user from
|
||||
properly undoing changes.
|
||||
{not in Vi}
|
||||
|
||||
This is most useful when you need to prompt the user halfway a change. For
|
||||
example in a function that calls |getchar()|. Do make sure that there was a
|
||||
related change before this that you must join with.
|
||||
|
||||
This doesn't work by itself, because the next key press will start a new
|
||||
change again. But you can do something like this: >
|
||||
|
||||
:undojoin | delete
|
||||
|
||||
After this an "u" command will undo the delete command and the previous
|
||||
change.
|
||||
|
||||
==============================================================================
|
||||
4. Remarks about undo *undo-remarks*
|
||||
|
||||
The number of changes that are remembered is set with the 'undolevels' option.
|
||||
If it is zero, the Vi-compatible way is always used. If it is negative no
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_05.txt* For Vim version 7.0aa. Last change: 2005 Feb 08
|
||||
*usr_05.txt* For Vim version 7.0aa. Last change: 2005 Oct 04
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -327,6 +327,11 @@ Example for Unix (assuming you didn't have a plugin directory yet): >
|
||||
That's all! Now you can use the commands defined in this plugin to justify
|
||||
text.
|
||||
|
||||
Instead of putting plugins directly into the plugin/ directory, you may
|
||||
better organize them by putting them into subdirectories under plugin/.
|
||||
As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl
|
||||
plugins.
|
||||
|
||||
|
||||
FILETYPE PLUGINS *add-filetype-plugin* *ftplugins*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_06.txt* For Vim version 7.0aa. Last change: 2002 Jul 14
|
||||
*usr_06.txt* For Vim version 7.0aa. Last change: 2006 Feb 16
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -179,10 +179,9 @@ You could also write your own color scheme. This is how you do it:
|
||||
colorscheme mine
|
||||
|
||||
If you want to see what the most often used color combinations look like, use
|
||||
these commands: >
|
||||
this command: >
|
||||
|
||||
:edit $VIMRUNTIME/syntax/colortest.vim
|
||||
:source %
|
||||
:runtime syntax/colortest.vim
|
||||
|
||||
You will see text in various color combinations. You can check which ones are
|
||||
readable and look nice.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_08.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
|
||||
*usr_08.txt* For Vim version 7.0aa. Last change: 2006 Feb 25
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -17,6 +17,7 @@ side by side. All this is possible with split windows.
|
||||
|08.6| Commands for all windows
|
||||
|08.7| Viewing differences with vimdiff
|
||||
|08.8| Various
|
||||
|08.9| Tab pages
|
||||
|
||||
Next chapter: |usr_09.txt| Using the GUI
|
||||
Previous chapter: |usr_07.txt| Editing more than one file
|
||||
@@ -504,6 +505,95 @@ window is to appear:
|
||||
:topleft {cmd} at the top or left of the Vim window
|
||||
:botright {cmd} at the bottom or right of the Vim window
|
||||
|
||||
|
||||
==============================================================================
|
||||
*08.9* Tab pages
|
||||
|
||||
You will have noticed that windows never overlap. That means you quickly run
|
||||
out of screen space. The solution for this is called Tab pages.
|
||||
|
||||
Assume you are editing "thisfile". To create a new tab page use this command: >
|
||||
|
||||
:tabedit thatfile
|
||||
|
||||
This will edit the file "thatfile" in a window that occupies the whole Vim
|
||||
window. And you will notice a bar at the top with the two file names:
|
||||
|
||||
+----------------------------------+
|
||||
| thisfile | /thatfile/ __________X| (thatfile is bold)
|
||||
|/* thatfile */ |
|
||||
|that |
|
||||
|that |
|
||||
|~ |
|
||||
|~ |
|
||||
|~ |
|
||||
| |
|
||||
+----------------------------------+
|
||||
|
||||
You now have two tab pages. The first one has a window for "thisfile" and the
|
||||
second one a window for "thatfile". It's like two pages that are on top of
|
||||
eachother, with a tab sticking out of each page showing the file name.
|
||||
|
||||
Now use the mouse to click on "thisfile" in the top line. The result is
|
||||
|
||||
+----------------------------------+
|
||||
| /thisfile/ | thatfile __________X| (thisfile is bold)
|
||||
|/* thisfile */ |
|
||||
|this |
|
||||
|this |
|
||||
|~ |
|
||||
|~ |
|
||||
|~ |
|
||||
| |
|
||||
+----------------------------------+
|
||||
|
||||
Thus you can switch between tab pages by clicking on the label in the top
|
||||
line. If you don't have a mouse or don't want to use it, you can use the "gt"
|
||||
command. Mnemonic: Goto Tab.
|
||||
|
||||
Now let's create another tab page with the command: >
|
||||
|
||||
:tab split
|
||||
|
||||
This makes a new tab page with one window that is editing the same buffer as
|
||||
the window we were in:
|
||||
|
||||
+-------------------------------------+
|
||||
| thisfile | /thisfile/ | thatfile __X| (thisfile is bold)
|
||||
|/* thisfile */ |
|
||||
|this |
|
||||
|this |
|
||||
|~ |
|
||||
|~ |
|
||||
|~ |
|
||||
| |
|
||||
+-------------------------------------+
|
||||
|
||||
You can put ":tab" before any Ex command that opens a window. The window will
|
||||
be opened in a new tab page. Another example: >
|
||||
|
||||
:tab help gt
|
||||
|
||||
Will show the help text for "gt" in a new tab page.
|
||||
|
||||
A few more things you can do with tab pages:
|
||||
|
||||
- click with the mouse in the space after the last label
|
||||
The next tab page will be selected, like with "gt".
|
||||
|
||||
- click with the mouse on the "X" in the top right corner
|
||||
The current tab page will be closed. Unless there are unsaved
|
||||
changes in the current tab page.
|
||||
|
||||
- double click with the mouse in the top line
|
||||
A new tab page will be created.
|
||||
|
||||
- the "tabonly" command
|
||||
Closes all tab pages except the current one. Unless there are unsaved
|
||||
changes in other tab pages.
|
||||
|
||||
For more information about tab pages see |tab-page|.
|
||||
|
||||
==============================================================================
|
||||
|
||||
Next chapter: |usr_09.txt| Using the GUI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_12.txt* For Vim version 7.0aa. Last change: 2004 Dec 29
|
||||
*usr_12.txt* For Vim version 7.0aa. Last change: 2006 Feb 26
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -273,7 +273,7 @@ To display a man page for the word under the cursor, use this: >
|
||||
For example, you want to know the return value of "strstr()" while editing
|
||||
this line:
|
||||
|
||||
if (strstr(input, "aap") == ) ~
|
||||
if ( strstr (input, "aap") == ) ~
|
||||
|
||||
Move the cursor to somewhere on "strstr" and type "\K". A window will open
|
||||
to display the man page for strstr().
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_31.txt* For Vim version 7.0aa. Last change: 2003 Oct 21
|
||||
*usr_31.txt* For Vim version 7.0aa. Last change: 2006 Feb 28
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -76,7 +76,7 @@ Will start the browser in "/usr".
|
||||
|
||||
When you are not using the GUI version, you could use the file explorer window
|
||||
to select files like in a file browser. However, this doesn't work for the
|
||||
":browse" command. See |file-explorer|.
|
||||
":browse" command. See |netrw-browse|.
|
||||
|
||||
==============================================================================
|
||||
*31.2* Confirmation
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 7.0aa. Last change: 2005 Jun 09
|
||||
*usr_41.txt* For Vim version 7.0aa. Last change: 2006 Feb 22
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -654,7 +654,9 @@ Working with text in the current buffer:
|
||||
nextnonblank() find next non-blank line
|
||||
prevnonblank() find previous non-blank line
|
||||
search() find a match for a pattern
|
||||
searchpos() find a match for a pattern
|
||||
searchpair() find the other end of a start/skip/end
|
||||
searchpairpos() find the other end of a start/skip/end
|
||||
|
||||
System functions and manipulation of files:
|
||||
browse() put up a file requester
|
||||
@@ -747,6 +749,7 @@ Various:
|
||||
exists() check if a variable, function, etc. exists
|
||||
has() check if a feature is supported in Vim
|
||||
getqflist() list of quickfix errors
|
||||
getloclist() list of location list items
|
||||
cscope_connection() check if a cscope connection exists
|
||||
did_filetype() check if a FileType autocommand was used
|
||||
eventhandler() check if invoked by an event handler
|
||||
@@ -758,7 +761,8 @@ Various:
|
||||
libcallnr() idem, returning a number
|
||||
getreg() get contents of a register
|
||||
getregtype() get type of a register
|
||||
setqflist() create a quickfix list
|
||||
setqflist() modify a quickfix list
|
||||
setloclist() modify a location list
|
||||
setreg() set contents and type of a register
|
||||
taglist() get list of matching tags
|
||||
|
||||
@@ -830,7 +834,7 @@ For people who like short functions, this does the same thing: >
|
||||
: return a:num2
|
||||
:endfunction
|
||||
|
||||
A user defined function is called in exactly the same way as a builtin
|
||||
A user defined function is called in exactly the same way as a built-in
|
||||
function. Only the name is different. The Min function can be used like
|
||||
this: >
|
||||
|
||||
@@ -2114,7 +2118,7 @@ a user to overrule or add to the default file. The default files start with: >
|
||||
When you write a compiler file and put it in your personal runtime directory
|
||||
(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to
|
||||
make the default file skip the settings.
|
||||
|
||||
*:CompilerSet*
|
||||
The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for
|
||||
":compiler". Vim defines the ":CompilerSet" user command for this. However,
|
||||
older Vim versions don't, thus your plugin should define it then. This is an
|
||||
@@ -2139,7 +2143,7 @@ that could be ~/.vim/after/compiler.
|
||||
*41.14* Writing a plugin that loads quickly *write-plugin-quickload*
|
||||
|
||||
A plugin may grow and become quite long. The startup delay may become
|
||||
noticable, while you hardly every use the plugin. Then it's time for a
|
||||
noticeable, while you hardly every use the plugin. Then it's time for a
|
||||
quickload plugin.
|
||||
|
||||
The basic idea is that the plugin is loaded twice. The first time user
|
||||
@@ -2241,7 +2245,7 @@ organize your functions in library scripts. But you must use function names
|
||||
where the part before the '#' matches the script name. Otherwise Vim would
|
||||
not know what script to load.
|
||||
|
||||
If you get really enthousiastic and write lots of library scripts, you may
|
||||
If you get really enthusiastic and write lots of library scripts, you may
|
||||
want to use subdirectories. Example: >
|
||||
|
||||
call netlib#ftp#read('somefile')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 7.0aa. Last change: 2005 Aug 27
|
||||
*various.txt* For Vim version 7.0aa. Last change: 2006 Feb 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -94,7 +94,8 @@ g8 Print the hex values of the bytes used in the
|
||||
*:nu* *:number*
|
||||
:[range]nu[mber] [count] [flags]
|
||||
Same as :print, but precede each line with its line
|
||||
number. (See also 'highlight' option).
|
||||
number. (See also 'highlight' and 'numberwidth'
|
||||
option).
|
||||
See |ex-flags| for [flags].
|
||||
|
||||
*:#*
|
||||
@@ -295,7 +296,8 @@ N *+gettext* message translations |multi-lang|
|
||||
*+GUI_Motif* Unix only: Motif |GUI|
|
||||
*+GUI_Photon* QNX only: Photon |GUI|
|
||||
m *+hangul_input* Hangul input support |hangul|
|
||||
*+iconv* Compiled with the |iconv()| function, may have |/dyn|
|
||||
*+iconv* Compiled with the |iconv()| function
|
||||
*+iconv/dyn* Likewise |iconv-dynamic| |/dyn|
|
||||
N *+insert_expand* |insert_expand| Insert mode completion
|
||||
N *+jumplist* |jumplist|
|
||||
B *+keymap* |'keymap'|
|
||||
@@ -320,19 +322,23 @@ B *+multi_byte* Korean and other languages |multibyte|
|
||||
*+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime|
|
||||
N *+multi_lang* non-English language support |multi-lang|
|
||||
m *+mzscheme* Mzscheme interface |mzscheme|
|
||||
m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn|
|
||||
m *+netbeans_intg* |netbeans|
|
||||
m *+ole* Win32 GUI only: |ole-interface|
|
||||
*+osfiletype* Support for the 'osfiletype' option and filetype
|
||||
checking in automatic commands. |autocmd-osfiletypes|
|
||||
N *+path_extra* Up/downwards search in 'path' and 'tags'
|
||||
m *+perl* Perl interface |perl|, may have |/dyn|
|
||||
m *+perl* Perl interface |perl|
|
||||
m *+perl/dyn* Perl interface |perl-dynamic| |/dyn|
|
||||
*+postscript* |:hardcopy| writes a PostScript file
|
||||
N *+printer* |:hardcopy| command
|
||||
H *+profile* |:profile| command
|
||||
m *+python* Python interface |python|, may have |/dyn|
|
||||
m *+python* Python interface |python|
|
||||
m *+python/dyn* Python interface |python-dynamic| |/dyn|
|
||||
N *+quickfix* |:make| and |quickfix| commands
|
||||
B *+rightleft* Right to left typing |'rightleft'|
|
||||
m *+ruby* Ruby interface |ruby|, may have |/dyn|
|
||||
m *+ruby* Ruby interface |ruby|
|
||||
m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
|
||||
N *+scrollbind* |'scrollbind'|
|
||||
B *+signs* |:sign|
|
||||
N *+smartindent* |'smartindent'|
|
||||
@@ -345,7 +351,8 @@ N *+syntax* Syntax highlighting |syntax|
|
||||
N *+tag_binary* binary searching in tags file |tag-binary-search|
|
||||
N *+tag_old_static* old method for static tags |tag-old-static|
|
||||
m *+tag_any_white* any white space allowed in tags file |tag-any-white|
|
||||
m *+tcl* Tcl interface |tcl|, may have |/dyn|
|
||||
m *+tcl* Tcl interface |tcl|
|
||||
m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
|
||||
*+terminfo* uses |terminfo| instead of termcap
|
||||
N *+termresponse* support for |t_RV| and |v:termresponse|
|
||||
N *+textobjects* |text-objects| selection
|
||||
@@ -642,6 +649,15 @@ g CTRL-A Only when Vim was compiled with MEM_PROFILING defined
|
||||
compresses the help files).
|
||||
{not in Vi}
|
||||
|
||||
*:lh* *:lhelpgrep*
|
||||
:lh[elpgrep] {pattern}[@xx]
|
||||
Same as ":helpgrep", except the location list is used
|
||||
instead of the quickfix list. If the help window is
|
||||
already opened, then the location list for that window
|
||||
is used. Otherwise, a new help window is opened and
|
||||
the location list for that window is set. The
|
||||
location list for the current window is not changed.
|
||||
|
||||
*:exu* *:exusage*
|
||||
:exu[sage] Show help on Ex commands. Added to simulate the Nvi
|
||||
command. {not in Vi}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version6.txt* For Vim version 7.0aa. Last change: 2005 Apr 18
|
||||
*version6.txt* For Vim version 7.0aa. Last change: 2005 Oct 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -80,6 +80,11 @@ Changed |changed-6.3|
|
||||
Added |added-6.3|
|
||||
Fixed |fixed-6.3|
|
||||
|
||||
VERSION 6.4 |version-6.4|
|
||||
Changed |changed-6.4|
|
||||
Added |added-6.4|
|
||||
Fixed |fixed-6.4|
|
||||
|
||||
==============================================================================
|
||||
INCOMPATIBLE CHANGES *incompatible-6*
|
||||
|
||||
@@ -13841,4 +13846,685 @@ Problem: After Visually selecting four characters, changing it to other
|
||||
Solution: Don't store the size of the Visual area when redo is active.
|
||||
Files: src/normal.c
|
||||
|
||||
==============================================================================
|
||||
VERSION 6.4 *version-6.4*
|
||||
|
||||
This section is about improvements made between version 6.3 and 6.4.
|
||||
|
||||
This is a bug-fix release. There are also a few new features. The major
|
||||
number of new items is in the runtime files and translations.
|
||||
|
||||
The big MS-Windows version now uses:
|
||||
Ruby version 1.8.3
|
||||
Perl version 5.8.7
|
||||
Python version 2.4.2
|
||||
|
||||
|
||||
Changed *changed-6.4*
|
||||
-------
|
||||
|
||||
Removed runtime/tools/tcltags, Exuberant ctags does it better.
|
||||
|
||||
|
||||
Added *added-6.4*
|
||||
-----
|
||||
|
||||
Alsaconf syntax file (Nikolai Weibull)
|
||||
Eruby syntax, indent, compiler and ftplugin file (Doug Kearns)
|
||||
Esterel syntax file (Maurizio Tranchero)
|
||||
Mathematica indent file (Steve Layland)
|
||||
Netrc syntax file (Nikolai Weibull)
|
||||
PHP compiler file (Doug Kearns)
|
||||
Pascal indent file (Neil Carter)
|
||||
Prescribe syntax file (Klaus Muth)
|
||||
Rubyunit compiler file (Doug Kearns)
|
||||
SMTPrc syntax file (Kornel Kielczewski)
|
||||
Sudoers syntax file (Nikolai Weibull)
|
||||
TPP syntax file (Gerfried Fuchs)
|
||||
VHDL ftplugin file (R. Shankar)
|
||||
Verilog-AMS syntax file (S. Myles Prather)
|
||||
|
||||
Bulgarian keymap (Alberto Mardegan)
|
||||
Canadian keymap (Eric Joanis)
|
||||
|
||||
Hungarian menu translations in UTF-8 (Kantra Gergely)
|
||||
Ukrainian menu translations (Bohdan Vlasyuk)
|
||||
|
||||
Irish message translations (Kevin Patrick Scannell)
|
||||
|
||||
Configure also checks for tclsh8.4.
|
||||
|
||||
|
||||
Fixed *fixed-6.4*
|
||||
-----
|
||||
|
||||
"dFxd;" deleted the character under the cursor, "d;" didn't remember the
|
||||
exclusiveness of the motion.
|
||||
|
||||
When using "set laststatus=2 cmdheight=2" in the .gvimrc you may only get one
|
||||
line for the cmdline. (Christian Robinson) Invoke command_height() after the
|
||||
GUI has started up.
|
||||
|
||||
Gcc would warn "dereferencing type-punned pointer will break strict -aliasing
|
||||
rules". Avoid using typecasts for variable pointers.
|
||||
|
||||
Gcc 3.x interprets the -MM argument differently. Change "-I /path" to
|
||||
"-isystem /path" for "make depend".
|
||||
|
||||
|
||||
Patch 6.3.001
|
||||
Problem: ":browse split" gives the file selection dialog twice. (Gordon
|
||||
Bazeley) Same problem for ":browse diffpatch".
|
||||
Solution: Reset cmdmod.browse before calling do_ecmd().
|
||||
Files: src/diff.c, src/ex_docmd.c
|
||||
|
||||
Patch 6.3.002
|
||||
Problem: When using translated help files with non-ASCII latin1 characters
|
||||
in the first line the utf-8 detection is wrong.
|
||||
Solution: Properly detect utf-8 characters. When a mix of encodings is
|
||||
detected continue with the next language and avoid a "no matches"
|
||||
error because of "got_int" being set. Add the directory name to
|
||||
the error message for a duplicate tag.
|
||||
Files: src/ex_cmds.c
|
||||
|
||||
Patch 6.3.003
|
||||
Problem: Crash when using a console dialog and the first choice does not
|
||||
have a default button. (Darin Ohashi)
|
||||
Solution: Allocate two more characters for the [] around the character for
|
||||
the default choice.
|
||||
Files: src/message.c
|
||||
|
||||
Patch 6.3.004
|
||||
Problem: When searching for a long string (140 chars in a 80 column
|
||||
terminal) get three hit-enter prompts. (Robert Webb)
|
||||
Solution: Avoid the hit-enter prompt when giving the message for wrapping
|
||||
around the end of the buffer. Don't give that message again when
|
||||
the string was not found.
|
||||
Files: src/message.c, src/search.c
|
||||
|
||||
Patch 6.3.005
|
||||
Problem: Crash when searching for a pattern with a character offset and
|
||||
starting in a closed fold. (Frank Butler)
|
||||
Solution: Check for the column to be past the end of the line. Also fix
|
||||
that a pattern with a character offset relative to the end isn't
|
||||
read back from the viminfo properly.
|
||||
Files: src/search.c
|
||||
|
||||
Patch 6.3.006
|
||||
Problem: ":breakadd file *foo" prepends the current directory to the file
|
||||
pattern. (Hari Krishna Dara)
|
||||
Solution: Keep the pattern as-is.
|
||||
Files: src/ex_cmds2.c
|
||||
|
||||
Patch 6.3.007
|
||||
Problem: When there is a buffer with 'buftype' set to "nofile" and using a
|
||||
":cd" command, the swap file is not deleted when exiting.
|
||||
Solution: Use the full path of the swap file also for "nofile" buffers.
|
||||
Files: src/fileio.c
|
||||
|
||||
Patch 6.3.008
|
||||
Problem: Compiling fails under OS/2.
|
||||
Solution: Include "e_screenmode" also for OS/2. (David Sanders)
|
||||
Files: src/globals.h
|
||||
|
||||
Patch 6.3.009 (after 6.3.006)
|
||||
Problem: ":breakadd file /path/foo.vim" does not match when a symbolic link
|
||||
is involved. (Servatius Brandt)
|
||||
Solution: Do expand the pattern when it does not start with "*".
|
||||
Files: runtime/doc/repeat.txt, src/ex_cmds2.c
|
||||
|
||||
Patch 6.3.010
|
||||
Problem: When writing to a named pipe there is an error for fsync()
|
||||
failing.
|
||||
Solution: Ignore the fsync() error for devices.
|
||||
Files: src/fileio.c
|
||||
|
||||
Patch 6.3.011
|
||||
Problem: Crash when the completion function of a user-command uses a
|
||||
"normal :cmd" command. (Hari Krishna Dara)
|
||||
Solution: Save the command line when invoking the completion function.
|
||||
Files: src/ex_getln.c
|
||||
|
||||
Patch 6.3.012
|
||||
Problem: Internal lalloc(0) error when using a complicated multi-line
|
||||
pattern in a substitute command. (Luc Hermitte)
|
||||
Solution: Avoid going past the end of a line.
|
||||
Files: src/ex_cmds.c
|
||||
|
||||
Patch 6.3.013
|
||||
Problem: Crash when editing a command line and typing CTRL-R = to evaluate
|
||||
a function that uses "normal :cmd". (Hari Krishna Dara)
|
||||
Solution: Save and restore the command line when evaluating an expression
|
||||
for CTRL-R =.
|
||||
Files: src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro,
|
||||
src/proto/ops.pro
|
||||
|
||||
Patch 6.3.014
|
||||
Problem: When using Chinese or Taiwanese the default for 'helplang' is
|
||||
wrong. (Simon Liang)
|
||||
Solution: Use the part of the locale name after "zh_".
|
||||
Files: src/option.c
|
||||
|
||||
Patch 6.3.015
|
||||
Problem: The string that winrestcmd() returns may end in garbage.
|
||||
Solution: NUL-terminate the string. (Walter Briscoe)
|
||||
Files: src/eval.c
|
||||
|
||||
Patch 6.3.016
|
||||
Problem: The default value for 'define' has "\s" before '#'.
|
||||
Solution: Add a star after "\s". (Herculano de Lima Einloft Neto)
|
||||
Files: src/option.c
|
||||
|
||||
Patch 6.3.017
|
||||
Problem: "8zz" may leave the cursor beyond the end of the line. (Niko
|
||||
Maatjes)
|
||||
Solution: Correct the cursor column after moving to another line.
|
||||
Files: src/normal.c
|
||||
|
||||
Patch 6.3.018
|
||||
Problem: ":0argadd zero" added the argument after the first one, instead of
|
||||
before it. (Adri Verhoef)
|
||||
Solution: Accept a zero range for ":argadd".
|
||||
Files: src/ex_cmds.h
|
||||
|
||||
Patch 6.3.019
|
||||
Problem: Crash in startup for debug version. (David Rennals)
|
||||
Solution: Move the call to nbdebug_wait() to after allocating NameBuff.
|
||||
Files: src/main.c
|
||||
|
||||
Patch 6.3.020
|
||||
Problem: When 'encoding' is "utf-8" and 'delcombine' is set, "dw" does not
|
||||
delete a word but only a combining character of the first
|
||||
character, if there is one. (Raphael Finkel)
|
||||
Solution: Correctly check that one character is being deleted.
|
||||
Files: src/misc1.c
|
||||
|
||||
Patch 6.3.021
|
||||
Problem: When the last character of a file name is a multi-byte character
|
||||
and the last byte is a path separator, the file cannot be edited.
|
||||
Solution: Check for the last byte to be part of a multi-byte character.
|
||||
(Taro Muraoka)
|
||||
Files: src/fileio.c
|
||||
|
||||
Patch 6.3.022 (extra)
|
||||
Problem: Win32: When the last character of a file name is a multi-byte
|
||||
character and the last byte is a path separator, the file cannot
|
||||
be written. A trail byte that is a space makes that a file cannot
|
||||
be opened from the command line.
|
||||
Solution: Recognize double-byte characters when parsing the command line.
|
||||
In mch_stat() check for the last byte to be part of a multi-byte
|
||||
character. (Taro Muraoka)
|
||||
Files: src/gui_w48.c, src/os_mswin.c
|
||||
|
||||
Patch 6.3.023
|
||||
Problem: When the "to" part of a mapping starts with its "from" part,
|
||||
abbreviations for the same characters is not possible. For
|
||||
example, when <Space> is mapped to something that starts with a
|
||||
space, typing <Space> does not expand abbreviations.
|
||||
Solution: Only disable expanding abbreviations when a mapping is not
|
||||
remapped, don't disable it when the RHS of a mapping starts with
|
||||
the LHS.
|
||||
Files: src/getchar.c, src/vim.h
|
||||
|
||||
Patch 6.3.024
|
||||
Problem: In a few places a string in allocated memory is not terminated
|
||||
with a NUL.
|
||||
Solution: Add ga_append(NUL) in script_get(), gui_do_findrepl() and
|
||||
serverGetVimNames().
|
||||
Files: src/ex_getln.c, src/gui.c, src/if_xcmdsrv.c, src/os_mswin.c
|
||||
|
||||
Patch 6.3.025 (extra)
|
||||
Problem: Missing NUL for list of server names.
|
||||
Solution: Add ga_append(NUL) in serverGetVimNames().
|
||||
Files: src/os_mswin.c
|
||||
|
||||
Patch 6.3.026
|
||||
Problem: When ~/.vim/after/syntax/syncolor.vim contains a command that
|
||||
reloads the colors an endless loop and/or a crash may occur.
|
||||
Solution: Only free the old value of an option when it was originally
|
||||
allocated. Limit recursiveness of init_highlight() to 5 levels.
|
||||
Files: src/option.c, src/syntax.c
|
||||
|
||||
Patch 6.3.027
|
||||
Problem: VMS: Writing a file may insert extra CR characters. Not all
|
||||
terminals are recognized correctly. Vt320 doesn't support colors.
|
||||
Environment variables are not expanded correctly.
|
||||
Solution: Use another method to write files. Add vt320 termcap codes for
|
||||
colors. (Zoltan Arpadffy)
|
||||
Files: src/fileio.c, src/misc1.c, src/os_unix.c, src/structs.h,
|
||||
src/term.c
|
||||
|
||||
Patch 6.3.028
|
||||
Problem: When appending to a file the BOM marker may be written. (Alex
|
||||
Jakushev)
|
||||
Solution: Do not write the BOM marker when appending.
|
||||
Files: src/fileio.c
|
||||
|
||||
Patch 6.3.029
|
||||
Problem: Crash when inserting a line break. (Walter Briscoe)
|
||||
Solution: In the syntax highlighting code, don't use an old state after a
|
||||
change was made, current_col may be past the end of the line.
|
||||
Files: src/syntax.c
|
||||
|
||||
Patch 6.3.030
|
||||
Problem: GTK 2: Crash when sourcing a script that deletes the menus, sets
|
||||
'encoding' to "utf-8" and loads the menus again. GTK error
|
||||
message when tooltip text is in a wrong encoding.
|
||||
Solution: Don't copy characters from the old screen to the new screen when
|
||||
switching 'encoding' to utf-8, they may be invalid. Only set the
|
||||
tooltip when it is valid utf-8.
|
||||
Files: src/gui_gtk.c, src/mbyte.c, src/proto/mbyte.pro, src/screen.c
|
||||
|
||||
Patch 6.3.031
|
||||
Problem: When entering a mapping and pressing Tab halfway the command line
|
||||
isn't redrawn properly. (Adri Verhoef)
|
||||
Solution: Reposition the cursor after drawing over the "..." of the
|
||||
completion attempt.
|
||||
Files: src/ex_getln.c
|
||||
|
||||
Patch 6.3.032
|
||||
Problem: Using Python 2.3 with threads doesn't work properly.
|
||||
Solution: Release the lock after initialization.
|
||||
Files: src/if_python.c
|
||||
|
||||
Patch 6.3.033
|
||||
Problem: When a mapping ends in a Normal mode command of more than one
|
||||
character Vim doesn't return to Insert mode.
|
||||
Solution: Check that the mapping has ended after obtaining all characters of
|
||||
the Normal mode command.
|
||||
Files: src/normal.c
|
||||
|
||||
Patch 6.3.034
|
||||
Problem: VMS: crash when using ":help".
|
||||
Solution: Avoid using "tags-??", some Open VMS systems can't handle the "?"
|
||||
wildcard. (Zoltan Arpadffy)
|
||||
Files: src/tag.c
|
||||
|
||||
Patch 6.3.035 (extra)
|
||||
Problem: RISC OS: Compile errors.
|
||||
Solution: Change e_screnmode to e_screenmode. Change the way
|
||||
__riscosify_control is set. Improve the makefile. (Andy Wingate)
|
||||
Files: src/os_riscos.c, src/search.c, src/Make_ro.mak
|
||||
|
||||
Patch 6.3.036
|
||||
Problem: ml_get errors when the whole file is a fold, switching
|
||||
'foldmethod' and doing "zj". (Christian J. Robinson) Was not
|
||||
deleting the fold but creating a fold with zero lines.
|
||||
Solution: Delete the fold properly.
|
||||
Files: src/fold.c
|
||||
|
||||
Patch 6.3.037 (after 6.3.032)
|
||||
Problem: Warning for unused variable.
|
||||
Solution: Change the #ifdefs for the saved thread stuff.
|
||||
Files: src/if_python.c
|
||||
|
||||
Patch 6.3.038 (extra)
|
||||
Problem: Win32: When the "file changed" dialog pops up after a click that
|
||||
gives gvim focus and not moving the mouse after that, the effect
|
||||
of the click may occur when moving the mouse later. (Ken Clark)
|
||||
Happened because the release event was missed.
|
||||
Solution: Clear the s_button_pending variable when any input is received.
|
||||
Files: src/gui_w48.c
|
||||
|
||||
Patch 6.3.039
|
||||
Problem: When 'number' is set and inserting lines just above the first
|
||||
displayed line (in another window on the same buffer), the line
|
||||
numbers are not updated. (Hitier Sylvain)
|
||||
Solution: When 'number' is set and lines are inserted/deleted redraw all
|
||||
lines below the change.
|
||||
Files: src/screen.c
|
||||
|
||||
Patch 6.3.040
|
||||
Problem: Error handling does not always work properly and may cause a
|
||||
buffer to be marked as if it's viewed in a window while it isn't.
|
||||
Also when selecting "Abort" at the attention prompt.
|
||||
Solution: Add enter_cleanup() and leave_cleanup() functions to move
|
||||
saving/restoring things for error handling to one place.
|
||||
Clear a buffer read error when it's unloaded.
|
||||
Files: src/buffer.c, src/ex_docmd.c, src/ex_eval.c,
|
||||
src/proto/ex_eval.pro, src/structs.h, src/vim.h
|
||||
|
||||
Patch 6.3.041 (extra)
|
||||
Problem: Win32: When the path to a file has Russian characters, ":cd %:p:h"
|
||||
doesn't work. (Valery Kondakoff)
|
||||
Solution: Use a wide function to change directory.
|
||||
Files: src/os_mswin.c
|
||||
|
||||
Patch 6.3.042
|
||||
Problem: When there is a closed fold at the top of the window, CTRL-X
|
||||
CTRL-E in Insert mode reduces the size of the fold instead of
|
||||
scrolling the text up. (Gautam)
|
||||
Solution: Scroll over the closed fold.
|
||||
Files: src/move.c
|
||||
|
||||
Patch 6.3.043
|
||||
Problem: 'hlsearch' highlighting sometimes disappears when inserting text
|
||||
in PHP code with syntax highlighting. (Marcel Svitalsky)
|
||||
Solution: Don't use pointers to remember where a match was found, use an
|
||||
index. The pointers may become invalid when searching in other
|
||||
lines.
|
||||
Files: src/screen.c
|
||||
|
||||
Patch 6.3.044 (extra)
|
||||
Problem: Mac: When 'linespace' is non-zero the Insert mode cursor leaves
|
||||
pixels behind. (Richard Sandilands)
|
||||
Solution: Erase the character cell before drawing the text when needed.
|
||||
Files: src/gui_mac.c
|
||||
|
||||
|
||||
Patch 6.3.045
|
||||
Problem: Unusual characters in an option value may cause unexpected
|
||||
behavior, especially for a modeline. (Ciaran McCreesh)
|
||||
Solution: Don't allow setting termcap options or 'printdevice' in a
|
||||
modeline. Don't list options for "termcap" and "all" in a
|
||||
modeline. Don't allow unusual characters in 'filetype', 'syntax',
|
||||
'backupext', 'keymap', 'patchmode' and 'langmenu'.
|
||||
Files: src/option.c, runtime/doc/options.txt
|
||||
|
||||
Patch 6.3.046
|
||||
Problem: ":registers" doesn't show multi-byte characters properly.
|
||||
(Valery Kondakoff)
|
||||
Solution: Get the length of each character before displaying it.
|
||||
Files: src/ops.c
|
||||
|
||||
Patch 6.3.047 (extra)
|
||||
Problem: Win32 with Borland C 5.5 on Windows XP: A new file is created with
|
||||
read-only attributes. (Tony Mechelynck)
|
||||
Solution: Don't use the _wopen() function for Borland.
|
||||
Files: src/os_win32.c
|
||||
|
||||
Patch 6.3.048 (extra)
|
||||
Problem: Build problems with VMS on IA64.
|
||||
Solution: Add dependencies to the build file. (Zoltan Arpadffy)
|
||||
Files: src/Make_vms.mms
|
||||
|
||||
Patch 6.3.049 (after 6.3.045)
|
||||
Problem: Compiler warning for "char" vs "char_u" mixup. (Zoltan Arpadffy)
|
||||
Solution: Add a typecast.
|
||||
Files: src/option.c
|
||||
|
||||
Patch 6.3.050
|
||||
Problem: When SIGHUP is received while busy exiting, non-reentrant
|
||||
functions such as free() may cause a crash.
|
||||
Solution: Ignore SIGHUP when exiting because of an error. (Scott Anderson)
|
||||
Files: src/misc1.c, src/main.c
|
||||
|
||||
Patch 6.3.051
|
||||
Problem: When 'wildmenu' is set and completed file names contain multi-byte
|
||||
characters Vim may crash.
|
||||
Solution: Reserve room for multi-byte characters. (Yasuhiro Matsumoto)
|
||||
Files: src/screen.c
|
||||
|
||||
Patch 6.3.052 (extra)
|
||||
Problem: Windows 98: typed keys that are not ASCII may not work properly.
|
||||
For example with a Russian input method. (Jiri Jezdinsky)
|
||||
Solution: Assume that the characters arrive in the current codepage instead
|
||||
of UCS-2. Perform conversion based on that.
|
||||
Files: src/gui_w48.c
|
||||
|
||||
Patch 6.3.053
|
||||
Problem: Win32: ":loadview" cannot find a file with non-ASCII characters.
|
||||
(Valerie Kondakoff)
|
||||
Solution: Use mch_open() instead of open() to open the file.
|
||||
Files: src/ex_cmds2.c
|
||||
|
||||
Patch 6.3.054
|
||||
Problem: When 'insertmode' is set <C-L>4ixxx<C-L> hangs Vim. (Jens Paulus)
|
||||
Vim is actually still working but redraw is disabled.
|
||||
Solution: When stopping Insert mode with CTRL-L don't put an Esc in the redo
|
||||
buffer but a CTRL-L.
|
||||
Files: src/edit.c
|
||||
|
||||
Patch 6.3.055 (after 6.3.013)
|
||||
Problem: Can't use getcmdline(), getcmdpos() or setcmdpos() with <C-R>=
|
||||
when editing a command line. Using <C-\>e may crash Vim. (Peter
|
||||
Winters)
|
||||
Solution: When moving ccline out of the way for recursive use, make it
|
||||
available to the functions that need it. Also save and restore
|
||||
ccline when calling get_expr_line(). Make ccline.cmdbuf NULL at
|
||||
the end of getcmdline().
|
||||
Files: src/ex_getln.c
|
||||
|
||||
Patch 6.3.056
|
||||
Problem: The last characters of a multi-byte file name may not be displayed
|
||||
in the window title.
|
||||
Solution: Avoid to remove a multi-byte character where the last byte looks
|
||||
like a path separator character. (Yasuhiro Matsumoto)
|
||||
Files: src/buffer.c, src/ex_getln.c
|
||||
|
||||
Patch 6.3.057
|
||||
Problem: When filtering lines folds are not updated. (Carl Osterwisch)
|
||||
Solution: Update folds for filtered lines.
|
||||
Files: src/ex_cmds.c
|
||||
|
||||
Patch 6.3.058
|
||||
Problem: When 'foldcolumn' is equal to the window width and 'wrap' is on
|
||||
Vim may crash. Disabling the vertical split feature breaks
|
||||
compiling. (Peter Winters)
|
||||
Solution: Check for zero room for wrapped text. Make compiling without
|
||||
vertical splits possible.
|
||||
Files: src/move.c, src/quickfix.c, src/screen.c, src/netbeans.c
|
||||
|
||||
Patch 6.3.059
|
||||
Problem: Crash when expanding an ":edit" command containing several spaces
|
||||
with the shell. (Brian Hirt)
|
||||
Solution: Allocate enough space for the quotes.
|
||||
Files: src/os_unix.c
|
||||
|
||||
Patch 6.3.060
|
||||
Problem: Using CTRL-R CTRL-O in Insert mode with an invalid register name
|
||||
still causes something to be inserted.
|
||||
Solution: Check the register name for being valid.
|
||||
Files: src/edit.c
|
||||
|
||||
Patch 6.3.061
|
||||
Problem: When editing a utf-8 file in an utf-8 xterm and there is a
|
||||
multi-byte character in the last column, displaying is messed up.
|
||||
(Jo<4A>l Rio)
|
||||
Solution: Check for a multi-byte character, not a multi-column character.
|
||||
Files: src/screen.c
|
||||
|
||||
Patch 6.3.062
|
||||
Problem: ":normal! gQ" hangs.
|
||||
Solution: Quit getcmdline() and do_exmode() when out of typeahead.
|
||||
Files: src/ex_getln.c, src/ex_docmd.c
|
||||
|
||||
Patch 6.3.063
|
||||
Problem: When a CursorHold autocommand changes to another window
|
||||
(temporarily) 'mousefocus' stops working.
|
||||
Solution: Call gui_mouse_correct() after triggering CursorHold.
|
||||
Files: src/gui.c
|
||||
|
||||
Patch 6.3.064
|
||||
Problem: line2byte(line("$") + 1) sometimes returns the wrong number.
|
||||
(Charles Campbell)
|
||||
Solution: Flush the cached line before counting the bytes.
|
||||
Files: src/memline.c
|
||||
|
||||
Patch 6.3.065
|
||||
Problem: The euro digraph doesn't always work.
|
||||
Solution: Add an "e=" digraph for Unicode euro character and adjust the
|
||||
help files.
|
||||
Files: src/digraph.c, runtime/doc/digraph.txt
|
||||
|
||||
Patch 6.3.066
|
||||
Problem: Backup file may get wrong permissions.
|
||||
Solution: Use permissions of original file for backup file in more places.
|
||||
Files: src/fileio.c
|
||||
|
||||
Patch 6.3.067 (after 6.3.066)
|
||||
Problem: Newly created file gets execute permission.
|
||||
Solution: Check for "perm" to be negative before using it.
|
||||
Files: src/fileio.c
|
||||
|
||||
Patch 6.3.068
|
||||
Problem: When editing a compressed file xxx.gz which is a symbolic link to
|
||||
the actual file a ":write" renames the link.
|
||||
Solution: Resolve the link, so that the actual file is renamed and
|
||||
compressed.
|
||||
Files: runtime/plugin/gzip.vim
|
||||
|
||||
Patch 6.3.069
|
||||
Problem: When converting text with illegal characters Vim may crash.
|
||||
Solution: Avoid that too much is subtracted from the length. (Da Woon Jung)
|
||||
Files: src/mbyte.c
|
||||
|
||||
Patch 6.3.070
|
||||
Problem: After ":set number linebreak wrap" and a vertical split, moving
|
||||
the vertical separator far left will crash Vim. (Georg Dahn)
|
||||
Solution: Avoid dividing by zero.
|
||||
Files: src/charset.c
|
||||
|
||||
Patch 6.3.071
|
||||
Problem: The message for CTRL-X mode is still displayed after an error for
|
||||
'thesaurus' or 'dictionary' being empty.
|
||||
Solution: Clear "edit_submode".
|
||||
Files: src/edit.c
|
||||
|
||||
Patch 6.3.072
|
||||
Problem: Crash in giving substitute message when language is Chinese and
|
||||
encoding is utf-8. (Yongwei)
|
||||
Solution: Make the msg_buf size larger when using multi-byte.
|
||||
Files: src/vim.h
|
||||
|
||||
Patch 6.3.073
|
||||
Problem: Win32 GUI: When the Vim window is partly above or below the
|
||||
screen, scrolling causes display errors when the taskbar is not on
|
||||
that side.
|
||||
Solution: Use the SW_INVALIDATE flag when the Vim window is partly below or
|
||||
above the screen.
|
||||
Files: src/gui_w48.c
|
||||
|
||||
Patch 6.3.074
|
||||
Problem: When mswin.vim is used and 'insertmode' is set, typing text in
|
||||
Select mode and then using CTRL-V results in <SNR>99_Pastegi.
|
||||
(Georg Dahn)
|
||||
Solution: When restart_edit is set use "d" instead of "c" to remove the
|
||||
selected text to avoid calling edit() twice.
|
||||
Files: src/normal.c
|
||||
|
||||
Patch 6.3.075
|
||||
Problem: After unloading another buffer, syntax highlighting in the current
|
||||
buffer may be wrong when it uses "containedin". (Eric Arnold)
|
||||
Solution: Use "buf" intead of "curbuf" in syntax_clear().
|
||||
Files: src/syntax.c
|
||||
|
||||
Patch 6.3.076
|
||||
Problem: Crash when using cscope and there is a parse error (e.g., line too
|
||||
long). (Alexey I. Froloff)
|
||||
Solution: Pass the actual number of matches to cs_manage_matches() and
|
||||
correctly handle the error situation.
|
||||
Files: src/if_cscope.c
|
||||
|
||||
Patch 6.3.077 (extra)
|
||||
Problem: VMS: First character input after ESC was not recognized.
|
||||
Solution: Added TRM$M_TM_TIMED in vms_read(). (Zoltan Arpadffy)
|
||||
Files: src/os_vms.c
|
||||
|
||||
Patch 6.3.078 (extra, after 6.3.077)
|
||||
Problem: VMS: Performance issue after patch 6.3.077
|
||||
Solution: Add a timeout in the itemlist. (Zoltan Arpadffy)
|
||||
Files: src/os_vms.c
|
||||
|
||||
Patch 6.3.079
|
||||
Problem: Crash when executing a command in the command line window while
|
||||
syntax highlighting is enabled. (Pero Brbora)
|
||||
Solution: Don't use a pointer to a buffer that has been deleted.
|
||||
Files: src/syntax.c
|
||||
|
||||
Patch 6.3.080 (extra)
|
||||
Problem: Win32: With 'encoding' set to utf-8 while the current codepage is
|
||||
Chinese editing a file with some specific characters in the name
|
||||
fails.
|
||||
Solution: Use _wfullpath() instead of _fullpath() when necessary.
|
||||
Files: src/os_mswin.c
|
||||
|
||||
Patch 6.3.081
|
||||
Problem: Unix: glob() may execute a shell command when it's not wanted.
|
||||
(Georgi Guninski)
|
||||
Solution: Verify the sandbox flag is not set.
|
||||
Files: src/os_unix.c
|
||||
|
||||
Patch 6.3.082 (after 6.3.081)
|
||||
Problem: Unix: expand() may execute a shell command when it's not wanted.
|
||||
(Georgi Guninski)
|
||||
Solution: A more generic solution than 6.3.081.
|
||||
Files: src/os_unix.c
|
||||
|
||||
Patch 6.3.083
|
||||
Problem: VMS: The vt320 termcap entry is incomplete.
|
||||
Solution: Add missing function keys. (Zoltan Arpadffy)
|
||||
Files: src/term.c
|
||||
|
||||
Patch 6.3.084 (extra)
|
||||
Problem: Cygwin: compiling with DEBUG doesn't work. Perl path was ignored.
|
||||
Failure when $(OUTDIR) already exists. "po" makefile is missing.
|
||||
Solution: Use changes tested in Vim 7. (Tony Mechelynck)
|
||||
Files: src/Make_cyg.mak, src/po/Make_cyg.mak
|
||||
|
||||
Patch 6.3.085
|
||||
Problem: Crash in syntax highlighting code. (Marc Espie)
|
||||
Solution: Prevent current_col going past the end of the line.
|
||||
Files: src/syntax.c
|
||||
|
||||
Patch 6.3.086 (extra)
|
||||
Problem: Can't produce message translation file with msgfmt that checks
|
||||
printf strings.
|
||||
Solution: Fix the Russian translation.
|
||||
Files: src/po/ru.po, src/po/ru.cp1251.po
|
||||
|
||||
Patch 6.3.087
|
||||
Problem: MS-DOS: Crash. (Jason Hood)
|
||||
Solution: Don't call fname_case() with a NULL pointer.
|
||||
Files: src/ex_cmds.c
|
||||
|
||||
Patch 6.3.088
|
||||
Problem: Editing ".in" causes error E218. (Stefan Karlsson)
|
||||
Solution: Require some characters before ".in". Same for ".orig" and others.
|
||||
Files: runtime/filetype.vim
|
||||
|
||||
Patch 6.3.089
|
||||
Problem: A session file doesn't work when created while the current
|
||||
directory contains a space or the directory of the session files
|
||||
contains a space. (Paolo Giarrusso)
|
||||
Solution: Escape spaces with a backslash.
|
||||
Files: src/ex_docmd.c
|
||||
|
||||
Patch 6.3.090
|
||||
Problem: A very big value for 'columns' or 'lines' may cause a crash.
|
||||
Solution: Limit the values to 10000 and 1000.
|
||||
Files: src/option.c
|
||||
|
||||
Patch 6.4a.001
|
||||
Problem: The Unix Makefile contained too many dependencies and a few
|
||||
uncommented lines.
|
||||
Solution: Run "make depend" with manual changes to avoid a gcc
|
||||
incompatibility. Comment a few lines.
|
||||
Files: src/Makefile
|
||||
|
||||
Patch 6.4b.001
|
||||
Problem: Vim reports "Vim 6.4a" in the ":version" output.
|
||||
Solution: Change "a" to "b". (Tony Mechelynck)
|
||||
Files: src/version.h
|
||||
|
||||
Patch 6.4b.002
|
||||
Problem: In Insert mode, pasting a multi-byte character after the end of
|
||||
the line leaves the cursor just before that character.
|
||||
Solution: Make sure "gP" leaves the cursor in the right place when
|
||||
'virtualedit' is set.
|
||||
Files: src/ops.c
|
||||
|
||||
Patch 6.4b.003 (after 6.4b.002)
|
||||
Problem: The problem still exists when 'encoding' is set to "cp936".
|
||||
Solution: Fix the problem in getvvcol(), compute the coladd field correctly.
|
||||
Files: src/charset.c, src/ops.c
|
||||
|
||||
Patch 6.4b.004
|
||||
Problem: Selecting a {} block with "viB" includes the '}' when there is an
|
||||
empty line before it.
|
||||
Solution: Don't advance the cursor to include a line break when it's already
|
||||
at the line break.
|
||||
Files: src/search.c
|
||||
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version7.txt* For Vim version 7.0aa. Last change: 2005 Sep 07
|
||||
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -20,15 +20,18 @@ NEW FEATURES |new-7|
|
||||
|
||||
Vim script enhancements |new-vim-script|
|
||||
Spell checking |new-spell|
|
||||
KDE support |new-KDE|
|
||||
Omni completion |new-omni-completion|
|
||||
MzScheme interface |new-MzScheme|
|
||||
Printing multi-byte text |new-print-multi-byte|
|
||||
Highlighting matching parens |new-matchparen|
|
||||
Translated manual pages |new-manpage-trans|
|
||||
Internal grep |new-vimgrep|
|
||||
Scroll back in messages |new-scroll-back|
|
||||
POSIX compatibility |new-posix|
|
||||
Debugger support |new-debug-support|
|
||||
Remote file explorer |new-netrw-explore|
|
||||
Define an operator |new-define-operator|
|
||||
Location list |new-location-list|
|
||||
Various new items |new-items-7|
|
||||
|
||||
IMPROVEMENTS |improvements-7|
|
||||
@@ -66,6 +69,8 @@ results in "a'b".
|
||||
When overwriting a file with ":w! fname" there was no warning for when "fname"
|
||||
was being edited by another Vim. Vim now gives an error message |E768|.
|
||||
|
||||
The support for Mac OS 9 has been removed.
|
||||
|
||||
|
||||
Minor incompatibilities:
|
||||
|
||||
@@ -127,6 +132,12 @@ compatibility problems and because "SS" can't be changed back to a sharp s.
|
||||
that could be the function argument without type. Now it finds the position
|
||||
where the type is given.
|
||||
|
||||
The line continuation in functions was not taken into account, line numbers in
|
||||
errors were logical lines, not lines in the sourced file. That made it
|
||||
difficult to locate errors. Now the line number in the sourced file is
|
||||
reported, relative to the function start. This also means that line numbers
|
||||
for ":breakadd func" are different.
|
||||
|
||||
==============================================================================
|
||||
NEW FEATURES *new-7*
|
||||
|
||||
@@ -151,6 +162,9 @@ expr". "-=" and ".=" works in a similar way.
|
||||
With the |:profile| command you can find out where your function or script
|
||||
wastes its time.
|
||||
|
||||
In the Python interface vim.eval() also handles Dictionaries and Lists.
|
||||
|python-eval| (G. Sumner Hayes)
|
||||
|
||||
|
||||
Spell checking *new-spell*
|
||||
--------------
|
||||
@@ -165,7 +179,7 @@ The 'spellsuggest' option specifies the methods used for making suggestions
|
||||
|
||||
The |[s| and |]s| commands can be used to move to the next or previous error.
|
||||
The |zg| and |zw| commands can be used to add good and wrong words.
|
||||
The |z?| command can be used to correct the word.
|
||||
The |z=| command can be used to correct the word.
|
||||
The |:mkspell| command is used to generate a Vim spell file from word lists.
|
||||
|
||||
The "undercurl" highlighting attribute was added to nicely point out spelling
|
||||
@@ -180,11 +194,28 @@ highlighting.
|
||||
Much more info here: |spell|.
|
||||
|
||||
|
||||
KDE support *new-KDE*
|
||||
-----------
|
||||
Omni completion *new-omni-completion*
|
||||
-----------------
|
||||
|
||||
Kvim is the KDE version of Vim. It uses the Qt toolkit. See |KVim|.
|
||||
(Thomas Capricelli, Philippe Fremy, Mickael Marchand, Mark Westcott, et al.)
|
||||
This could also be called "intellisense", but that is a trademark. It is a
|
||||
smart kind of completion. The text in front of the cursor is inspected to
|
||||
figure out what could be following. This may suggest struct and class
|
||||
members, system functions, etc.
|
||||
|
||||
Use CTRL-X CTRL-O in Insert mode to start the completion. |i_CTRL-X_CTRL-O|
|
||||
|
||||
The 'omnifunc' option is set by filetype plugins to define the function that
|
||||
figures out the completion.
|
||||
|
||||
Currently supported languages:
|
||||
C |ft-c-omni|
|
||||
(X)HTML with CSS |ft-html-omni|
|
||||
JavaScript |ft-javascript-omni|
|
||||
any language wih syntax highligting |ft-syntax-omni|
|
||||
XML |ft-xml-omni|
|
||||
|
||||
When the 'completeopt' option contains "menu" then matches for Insert mode
|
||||
completion are displayed in a popup menu.
|
||||
|
||||
|
||||
MzScheme interface *new-MzScheme*
|
||||
@@ -203,6 +234,20 @@ The 'printmbcharset' and 'printmbfont' options are used for this.
|
||||
Also see |postscript-cjk-printing|. (Mike Williams)
|
||||
|
||||
|
||||
Highlighting matching parens *new-matchparen*
|
||||
----------------------------
|
||||
|
||||
When moving the cursor through the text and it is on a paren, then the
|
||||
matching paren can be highlighted. This uses the new |CursorMoved|
|
||||
autocommand event.
|
||||
|
||||
See |matchparen| for more information.
|
||||
|
||||
The plugin uses the |:match| command. It now supports three match patterns.
|
||||
The plugin uses the third one. The first one is for the user and the second
|
||||
one can be used by another plugin.
|
||||
|
||||
|
||||
Translated manual pages *new-manpage-trans*
|
||||
-----------------------
|
||||
|
||||
@@ -325,6 +370,28 @@ and a GUI dialog is not possible.
|
||||
The netrw plugin is maintained by Charles Campbell.
|
||||
|
||||
|
||||
Define an operator *new-define-operator*
|
||||
------------------
|
||||
|
||||
Previously it was not possible to define your own operator; a command that is
|
||||
followed by a {motion}. Vim 7 introduces the 'operatorfunc' option and the
|
||||
|g@| operator. This makes it possible to define a mapping that works like an
|
||||
operator. The actual work is then done by a function, which is invoked
|
||||
through the |g@| operator.
|
||||
|
||||
See |:map-operator| for the explanation and an example.
|
||||
|
||||
|
||||
Location list *new-location-list*
|
||||
-------------
|
||||
|
||||
The support for a per-window quickfix list (location list) is added. The
|
||||
location list can be displayed in a location window (similar to the quickfix
|
||||
window). You can open more than one location list window. A set of commands
|
||||
similar to the quickfix commands are added to browse the location list.
|
||||
(Yegappan Lakshmanan)
|
||||
|
||||
|
||||
Various new items *new-items-7*
|
||||
-----------------
|
||||
|
||||
@@ -338,6 +405,17 @@ CTRL-W <Enter> In the quickfix window: opens a new window to show the
|
||||
|
||||
|at| and |it| text objects select a block of text between HTML or XML tags.
|
||||
|
||||
<A-LeftMouse> ('mousemodel' "popup" or "popup-setpos")
|
||||
<A-RightMouse> ('mousemodel' "extend")
|
||||
Make a blockwise selection. |<A-LeftMouse>|
|
||||
|
||||
gF Start editing the filename under the cursor and jump
|
||||
to the line number following the file name.
|
||||
(Yegappan Lakshmanan)
|
||||
|
||||
CTRL-W F Start editing the filename under the cursor in a new
|
||||
window and jump to the line number following the file
|
||||
name. (Yegappan Lakshmanan)
|
||||
|
||||
Insert mode commands: ~
|
||||
|
||||
@@ -349,6 +427,8 @@ Options: ~
|
||||
'completefunc' The name of a function used for user-specified Insert
|
||||
mode completion. CTRL-X CTRL-U can be used in Insert
|
||||
mode to do any kind of completion. (Taro Muraoka)
|
||||
'completeopt' Enable popup menu for Insert mode completion.
|
||||
'omnifunc' The name of a function used for omni completion.
|
||||
'quoteescape' Characters used to escape quotes inside a string.
|
||||
Used for the a", a' and a` text objects. |a'|
|
||||
'numberwidth' Minimal width of the space used for the 'number'
|
||||
@@ -363,6 +443,8 @@ Options: ~
|
||||
(based on an idea from Yegappan Lakshmanan)
|
||||
'formatlistpat' pattern to recognize a numbered list for formatting.
|
||||
(idea by Hugo Haas)
|
||||
'formatexpr' expression for formatting text with |gq| and when text
|
||||
goes over 'textwidth' in Insert mode.
|
||||
'spell' switch spell checking on/off
|
||||
'spelllang' languages to check spelling for
|
||||
'spellsuggest' methods for spell suggestions
|
||||
@@ -376,18 +458,15 @@ Ex commands: ~
|
||||
Win32: The ":winpos" command now also works in the console. (Vipin Aravind)
|
||||
|
||||
|:startreplace| Start Replace mode. (Charles Campbell)
|
||||
|:startgreplace| Start Virtual Replace mode.
|
||||
|
||||
|:0file| Removes the name of the buffer. (Charles Campbell)
|
||||
|
||||
|:diffoff| Switch off diff mode in the current window or in all
|
||||
windows.
|
||||
|
||||
|:keepalt| Do not change the alternate file.
|
||||
|
||||
|:delmarks| Delete marks.
|
||||
|
||||
|:sandbox| Command modifier: execute the argument in the sandbox.
|
||||
|
||||
|:exusage| Help for Ex commands (Nvi command).
|
||||
|
||||
|:viusage| Help for Vi commands (Nvi command).
|
||||
@@ -404,8 +483,66 @@ Win32: The ":winpos" command now also works in the console. (Vipin Aravind)
|
||||
|:cexpr| Read error messages from a Vim expression (Yegappan
|
||||
Lakshmanan).
|
||||
|
||||
|:caddexpr| Add error messages from a Vim expression to an
|
||||
existing quickfix list. (Yegappan Lakshmanan).
|
||||
|:caddbuffer| Add errors from the current buffer to the quickfix
|
||||
list.
|
||||
|
||||
New functions: ~
|
||||
|:lfile| Like |:cfile| but use the location list.
|
||||
|:lgetfile| Like |:cgetfile| but use the location list.
|
||||
|:laddfile| Like |:caddfile| but use the location list.
|
||||
|:lbuffer| Like |:cbuffer| but use the location list.
|
||||
|:laddbuffer| Like |:caddbuffer| but use the location list.
|
||||
|:lexpr| Like |:cexpr| but use the location list.
|
||||
|:laddexpr| Like |:caddexpr| but use the location list.
|
||||
|:ll| Like |:cc| but use the location list.
|
||||
|:llist| Like |:clist| but use the location list.
|
||||
|:lnext| Like |:cnext| but use the location list.
|
||||
|:lprevious| Like |:cprevious| but use the location list.
|
||||
|:lNext| Like |:cNext| but use the location list.
|
||||
|:lfirst| Like |:cfirst| but use the location list.
|
||||
|:lrewind| Like |:crewind| but use the location list.
|
||||
|:llast| Like |:clast| but use the location list.
|
||||
|:lnfile| Like |:cnfile| but use the location list.
|
||||
|:lpfile| Like |:cpfile| but use the location list.
|
||||
|:lNfile| Like |:cNfile| but use the location list.
|
||||
|:lolder| Like |:colder| but use the location list.
|
||||
|:lnewer| Like |:cnewer| but use the location list.
|
||||
|:lwindow| Like |:cwindow| but use the location list.
|
||||
|:lopen| Like |:copen| but use the location list.
|
||||
|:lclose| Like |:cclose| but use the location list.
|
||||
|:lmake| Like |:make| but use the location list.
|
||||
|:lgrep| Like |:grep| but use the location list.
|
||||
|:lgrepadd| Like |:grepadd| but use the location list.
|
||||
|:lvimgrep| Like |:vimgrep| but use the location list.
|
||||
|:lvimgrepadd| Like |:vimgrepadd| but use the location list.
|
||||
|:lhelpgrep| Like |:helpgrep| but use the location list.
|
||||
|:lcscope| Like |:cscope| but use the location list.
|
||||
|:ltag| Jump to a tag and add matching tags to a location list.
|
||||
|
||||
|:undojoin| Join a change with the previous undo block.
|
||||
|
||||
|
||||
Ex command modifiers: ~
|
||||
|
||||
|:keepalt| Do not change the alternate file.
|
||||
|
||||
|:noautocmd| Do not trigger autocommand events.
|
||||
|
||||
|:sandbox| Execute a command in the sandbox.
|
||||
|
||||
|
||||
Ex command arguments: ~
|
||||
|
||||
|++bad| Specify what happens with characters that can't be
|
||||
converted and illegal bytes. (code example by Yasuhiro
|
||||
Matsumoto)
|
||||
Also, when a conversion error occurs or illegal bytes
|
||||
are found include the line number in the error
|
||||
message.
|
||||
|
||||
|
||||
New and extended functions: ~
|
||||
|
||||
|add()| append an item to a List
|
||||
|append()| append List of lines to the buffer
|
||||
@@ -416,8 +553,11 @@ New functions: ~
|
||||
|complete_check()| check for key pressed, for 'completefunc'
|
||||
|copy()| make a shallow copy of a List or Dictionary
|
||||
|count()| count nr of times a value is in a List or Dictionary
|
||||
|cursor()| also accepts an offset for 'virtualedit', and
|
||||
the first argument can be a list: [lnum, col, off]
|
||||
|deepcopy()| make a full copy of a List or Dictionary
|
||||
|empty()| check if List or Dictionary is empty
|
||||
|getloclist()| list of location list items (Yegappan Lakshmanan)
|
||||
|getqflist()| list of quickfix errors (Yegappan Lakshmanan)
|
||||
|extend()| append one List to another or add items from one
|
||||
Dictionary to another
|
||||
@@ -429,11 +569,15 @@ New functions: ~
|
||||
|get()| get an item from a List or Dictionary
|
||||
|getbufline()| get a list of lines from a specified buffer
|
||||
(Yegappan Lakshmanan)
|
||||
|getcmdtype()| return the current command-line type
|
||||
(Yegappan Lakshmanan)
|
||||
|getfontname()| get actual font name being used
|
||||
|getfperm()| get file permission string (Nikolai Weibull)
|
||||
|getftype()| get type of file (Nikolai Weibull)
|
||||
|getline()| with second argument: get List with buffer lines
|
||||
|getpos()| return a list with the position of cursor, mark, etc.
|
||||
|has_key()| check whether a key appears in a Dictionary
|
||||
|inputlist()| select an entry from a list
|
||||
|insert()| insert an item somewhere in a List
|
||||
|items()| get List of Dictionary key-value pairs
|
||||
|join()| join List items into a String
|
||||
@@ -449,7 +593,11 @@ New functions: ~
|
||||
|remove()| remove one or more items from a List or Dictionary
|
||||
|repeat()| repeat "expr" "count" times (Christophe Poucet)
|
||||
|reverse()| reverse the order of a List
|
||||
|setqflist()| create a quickfix list (Yegappan Lakshmanan)
|
||||
|searchdecl()| search for declaration of variable
|
||||
|searchpairpos()| return a List with the position of the match
|
||||
|searchpos()| return a List with the position of the match
|
||||
|setloclist()| modify a location list (Yegappan Lakshmanan)
|
||||
|setqflist()| modify a quickfix list (Yegappan Lakshmanan)
|
||||
|sort()| sort a List
|
||||
|soundfold()| get the sound-a-like equivalent of a word
|
||||
|split()| split a String into a List
|
||||
@@ -475,6 +623,13 @@ New autocommand events: ~
|
||||
|ColorScheme| after loading a color scheme
|
||||
|QuickFixCmdPre| before :make, :grep et al. (Ciaran McCreesh)
|
||||
|QuickFixCmdPost| after :make, :grep et al. (Ciaran McCreesh)
|
||||
|SessionLoadPost| after loading a session file. (Yegappan Lakshmanan)
|
||||
|
||||
|SpellFileMissing| when a spell file can't be found
|
||||
|
||||
|CursorHoldI| the user doesn't press a key for a while in Insert mode
|
||||
|CursorMoved| the cursor was moved in Normal mode
|
||||
|CursorMovedI| the cursor was moved in Insert mode
|
||||
|
||||
|
||||
New items in search patterns: ~
|
||||
@@ -489,9 +644,15 @@ New items in search patterns: ~
|
||||
|/\%U| \%U1234abcd search for character with 8 pos. hex number
|
||||
|/\]| [\U1234abcd] idem, in a colletion
|
||||
(The above partly by Ciaran McCreesh)
|
||||
|
||||
|/[[=| [[=a=]] an equivalence class (only for latin1 characters)
|
||||
|/[[.| [[.a.]] a collation element (only works with single char)
|
||||
|
||||
|/\%'m| \%'m match at mark m
|
||||
|/\%<'m| \%<'m match before mark m
|
||||
|/\%>'m| \%>'m match after mark m
|
||||
|/\%V| \%V match in Visual area
|
||||
|
||||
Nesting |/multi| items no longer is an error when an empty match is possible.
|
||||
|
||||
It is now possible to use \{0}, it matches the preceding atom zero times. Not
|
||||
@@ -520,11 +681,18 @@ Moved all the indent settings from the filetype plugin to the indent file.
|
||||
Implemented b:undo_indent to undo indent settings when setting 'filetype' to a
|
||||
different value.
|
||||
|
||||
VHDL indent file (Gerald Lai)
|
||||
|
||||
MGL syntax file. (Gero Kuhlmann)
|
||||
|
||||
rd syntax file. (Johannes Ranke)
|
||||
|
||||
New Keymaps: ~
|
||||
|
||||
Sinhala (Sri Lanka) (Harshula Jayasuriya)
|
||||
|
||||
Tamil in TSCII encoding (Yegappan Lakshmanan)
|
||||
|
||||
|
||||
New message translations: ~
|
||||
|
||||
@@ -542,21 +710,23 @@ character selections can be used between two Vims. (Eckehard Berns)
|
||||
Also fixes the problem that setting 'clipboard' to "unnamed" breaks using
|
||||
"yyp".
|
||||
|
||||
Mac: GUI font selector. (Peter "Rain Dog" Cucka)
|
||||
Mac: GUI font selector. (Peter Cucka)
|
||||
|
||||
Mac: support for multi-byte characters. (Da Woon Jung)
|
||||
|
||||
GUI font selector for Motif. (Marcin Dalecki)
|
||||
|
||||
Nicer toolbar buttons for Motif. (Marcin Dalecki)
|
||||
|
||||
Mnemonics for the Motif find/replace dialog. (Marcin Dalecki)
|
||||
Mac: Support the xterm mouse in the non-GUI version.
|
||||
|
||||
Mac: better integration with Xcode. Post a fake mouse-up event after the odoc
|
||||
event and the drag receive handler to work around a stall after Vim loads a
|
||||
file. Fixed an off-by-one line number error. (Da Woon Jung)
|
||||
|
||||
Added the t_SI and t_EI escape sequences for starting and ending Insert mode.
|
||||
GUI font selector for Motif. (Marcin Dalecki)
|
||||
|
||||
Nicer toolbar buttons for Motif. (Marcin Dalecki)
|
||||
|
||||
Mnemonics for the Motif find/replace dialog. (Marcin Dalecki)
|
||||
|
||||
To be used to set the cursor shape to a bar or a block. No default values,
|
||||
they are not supported by termcap/terminfo.
|
||||
|
||||
@@ -575,6 +745,26 @@ When 'verbose' is set the output of the ":map", ":abbreviate", ":command",
|
||||
|
||||
":function /pattern" lists functions matching the pattern.
|
||||
|
||||
"1gd" can be used like "gd" but ignores matches in a {} block that ends before
|
||||
the cursor position. Likewise for "1gD" and "gD".
|
||||
|
||||
'scrolljump' can be set to a negative number to scroll a percentage of the
|
||||
window height.
|
||||
|
||||
The |v:scrollstart| variable has been added to help finding the location in
|
||||
your script that causes the hit-enter prompt.
|
||||
|
||||
To make it possible to handle the situation that a file is being edited that
|
||||
is already being edited by another Vim instance, the |SwapExists| event has
|
||||
been added. The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables
|
||||
can be used, for example to use the |client-server| functionality to bring the
|
||||
other Vim to the foreground.
|
||||
When starting Vim with a "-t tag" argument, there is an existing swapfile and
|
||||
the user selects "quit" or "abort" then exit Vim.
|
||||
|
||||
Undo now also restores the '< and '> marks. "gv" selects the same area as
|
||||
before the change and undo.
|
||||
|
||||
==============================================================================
|
||||
IMPROVEMENTS *improvements-7*
|
||||
|
||||
@@ -582,24 +772,43 @@ IMPROVEMENTS *improvements-7*
|
||||
|
||||
Move the help for printing to a separate help file. It's quite a lot now.
|
||||
|
||||
When ":silent" is used and a backwards range is given for an Ex command the
|
||||
range is swapped automatically instead of asking if that is OK.
|
||||
|
||||
The pattern matching code was changed from a recursive function to an
|
||||
iterative mechanism. This avoids out-of-stack errors. State is stored in
|
||||
allocated memory, running out of memory can always be detected. Allows
|
||||
matching more complex things, but Vim may seem to hang while doing that.
|
||||
|
||||
Previously some options were always evaluated in the |sandbox|. Now that only
|
||||
happens when the option was set from a modeline or in secure mode. Applies to
|
||||
'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes)
|
||||
|
||||
Some commands and expressions could have nasty side effects, such as using
|
||||
CTRL-R = while editing a search pattern and the expression invokes a function
|
||||
that jumps to another window. The |textlock| has been added to prevent this
|
||||
from happening.
|
||||
|
||||
":breakadd here" and ":breakdel here" can be used to set or delete a
|
||||
breakpoint at the cursor.
|
||||
|
||||
It is now possible to define a function with: >
|
||||
:exe "func Test()\n ...\n endfunc"
|
||||
|
||||
The tutor was updated to make it simpler to use and added text to explain a
|
||||
few more important commands. Used ideas from Gabriel Zachmann.
|
||||
|
||||
Unix: When libcall() fails obtain an error message with dlerror() and display
|
||||
it. (Johannes Zellner)
|
||||
|
||||
Mac and Cygwin: When editing an existing file make the file name the same case
|
||||
of the edited file. Thus when typing ":e os_UNIX.c" the file name becomes
|
||||
"os_unix.c".
|
||||
|
||||
Added "nbsp" in 'listchars'. (David Blanchet)
|
||||
|
||||
Added the "acwrite" value for the 'buftype' option. This is for a buffer that
|
||||
doesn not have a name that refers to a file and is written with BufWriteCmd
|
||||
does not have a name that refers to a file and is written with BufWriteCmd
|
||||
autocommands.
|
||||
|
||||
For lisp indenting and matching parenthesis: (Sergey Khorev)
|
||||
@@ -631,9 +840,6 @@ upper case. Add color support to the builtin vt320 terminal codes.
|
||||
For the '%' item in 'viminfo', allow a number to set a maximum for the number
|
||||
of buffers.
|
||||
|
||||
The 'statusline' option can be local to the window, so that each window can
|
||||
have a different value. (partly by Yegappan Lakshmanan)
|
||||
|
||||
When a file looks like a shell script, check for an "exec" command that starts
|
||||
the tcl interpreter. (suggested by Alexios Zavras)
|
||||
|
||||
@@ -647,6 +853,10 @@ list.
|
||||
Win32: When libintl.dll supports bind_textdomain_codeset(), use it.
|
||||
(NAKADAIRA Yukihiro)
|
||||
|
||||
Win32: Vim was not aware of hard links on NTFS file systems. These are
|
||||
detected now for when 'backupcopy' is "auto". Also fixed a bogus "file has
|
||||
been changed since reading it" error for links.
|
||||
|
||||
When foldtext() finds no text after removing the comment leader, use the
|
||||
second line of the fold. Helps for C-style /* */ comments where the first
|
||||
line is just "/*".
|
||||
@@ -658,6 +868,10 @@ the swap file to indicate it is in the same directory as the edited file. The
|
||||
used path then doesn't matter and the check for editing the same file is much
|
||||
more reliable.
|
||||
|
||||
Unix: When editing a file through a symlink the swap file would use the name
|
||||
of the symlink. Now use the name of the actual file, so that editing the same
|
||||
file twice is detected. (suggestions by Stefano Zacchiroli and James Vega)
|
||||
|
||||
Client-server communication now supports 'encoding'. When setting 'encoding'
|
||||
in a Vim server to "utf-8", and using "vim --remote fname" in a console,
|
||||
"fname" is converted from the console encoding to utf-8. Also allows Vims
|
||||
@@ -719,7 +933,7 @@ To count items (pattern matches) without changing the buffer the 'n' flag has
|
||||
been added to |:substitute|. See |count-items|.
|
||||
|
||||
The "screen.linux" $TERM name is recognized to set the default for
|
||||
'background' to "dark". (Ciaran McCreesh) Also for "cygwin".
|
||||
'background' to "dark". (Ciaran McCreesh) Also for "cygwin" and "putty".
|
||||
|
||||
The |FileChangedShell| autocommand event can now use the |v:fcs_reason|
|
||||
variable that specifies what triggered the event. |v:fcs_choice| can be used
|
||||
@@ -769,6 +983,9 @@ Win32: Balloons can have multiple lines if common controls supports it.
|
||||
The 's' flag is added to the search() and searchpair() function to set the
|
||||
' mark if the cursor is moved. (Yegappan Lakshmanan)
|
||||
|
||||
The search() and searchpair() functions have an extra argument to specify
|
||||
where to stop searching. Speeds up searches that should not continue too far.
|
||||
|
||||
For 'errorformat' it was not possible to have a file name that contains the
|
||||
character that follows after "%f". For example, in "%f:%l:%m" the file name
|
||||
could not contain ":". Now include the first ":" where the rest of the
|
||||
@@ -779,13 +996,90 @@ For command-line completion the matches for various types of arguments are now
|
||||
sorted: user commands, variables, syntax names, etc.
|
||||
|
||||
When no locale is set, thus using the "C" locale, Vim will work with latin1
|
||||
characters, using it's own isupper()/toupper()/etc. functions.
|
||||
characters, using its own isupper()/toupper()/etc. functions.
|
||||
|
||||
When using an rxvt terminal emulator guess the value of 'background' using the
|
||||
COLORFGBG environment variable. (Ciaran McCreesh)
|
||||
|
||||
Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh)
|
||||
|
||||
When 'foldcolumn' is one then put as much info in it as possible. This allows
|
||||
closing a fold with the mouse by clicking on the '-'.
|
||||
|
||||
input() takes an optional completion argument to specify the type of
|
||||
completion supported for the input. (Yegappan Lakshmanan)
|
||||
|
||||
"dp" works with more than two buffers in diff mode if there is only one where
|
||||
'modifiable' is set.
|
||||
|
||||
When the 'include' option contains \zs the file name found is what is being
|
||||
matched from \zs to the end or \ze. Useful to pass more to 'includeexpr'.
|
||||
|
||||
Loading plugins on startup now supports subdirectories in the plugin
|
||||
directory. |load-plugins|
|
||||
|
||||
In the foldcolumn always show the '+' for a closed fold, so that it can be
|
||||
opened easily. It may overwrite another character, esp. if 'foldcolumn' is 1.
|
||||
|
||||
It is now possible to get the W10 message again by setting 'readonly'. Useful
|
||||
in the FileChangedRO autocommand when checking out the file fails.
|
||||
|
||||
Unix: When open() returns EFBIG give an appropriate message.
|
||||
|
||||
":mksession" sets the SessionLoad variable to notify plugins. A modeline is
|
||||
added to the session file to set 'filetype' to "vim".
|
||||
|
||||
In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it
|
||||
more logical. (Robert Webb)
|
||||
|
||||
When appending to a file while the buffer has no name the name of the appended
|
||||
file would be used for the current buffer. But the buffer contents is
|
||||
actually different from the file content. Don't set the file name, unless the
|
||||
'P' flag is present in 'cpoptions'.
|
||||
|
||||
When starting to edit a new file and the directory for the file doesn't exist
|
||||
then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user
|
||||
a hint that something might be wrong.
|
||||
|
||||
Win32: Preserve the hidden attribute of the viminfo file.
|
||||
|
||||
In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and
|
||||
then a cursor key. Now keep the previously inserted text if nothing is
|
||||
inserted after the CTRL-O. Allows using CTRL-O commands to move the cursor
|
||||
without losing the last inserted text.
|
||||
|
||||
The exists() function now supports checking for autocmd group definition
|
||||
and for supported autocommand events. (Yegappan Lakshmanan)
|
||||
|
||||
Allow using ":global" in the sandbox, it doesn't do anything harmful by
|
||||
itself.
|
||||
|
||||
":saveas asdf.c" will set 'filetype' to c when it's empty. Also for ":w
|
||||
asdf.c" when it sets the filename for the buffer.
|
||||
|
||||
Insert mode completion for whole lines now also searches unloaded buffers.
|
||||
|
||||
The colortest.vim script can now be invoked directly with ":source" or
|
||||
":runtime".
|
||||
|
||||
The 'statusline' option can be local to the window, so that each window can
|
||||
have a different value. (partly by Yegappan Lakshmanan)
|
||||
|
||||
The 'statusline' option and other options that support the same format can now
|
||||
use these new features:
|
||||
- When it starts with "%!" the value is first evaluated as an expression
|
||||
before parsing the value.
|
||||
- "%#HLname#" can be used to start highlighting with HLname.
|
||||
|
||||
When 'statusline' is set to something that causes an error message then it is
|
||||
made empty to avoid an endless redraw loop. Also for other options, such at
|
||||
'tabline'. ":verbose set statusline" will mention that it was set in an error
|
||||
handler.
|
||||
|
||||
When there are several matching tags, the ":tag <name>" and CTRL-] commands
|
||||
jump to the [count] matching tag. (Yegappan Lakshmanan)
|
||||
|
||||
|
||||
==============================================================================
|
||||
COMPILE TIME CHANGES *compile-changes-7*
|
||||
|
||||
@@ -821,6 +1115,9 @@ Mac: When running "make install" the runtime files are installed as for Unix.
|
||||
Avoids that too many files are copied. When running "make" a link to the
|
||||
runtime files is created to avoid a recursive copy that takes much time.
|
||||
|
||||
Mac: Configure will attempt to build Vim for both Intel and PowerPC. The
|
||||
--with-mac-arch configure argument can change it.
|
||||
|
||||
==============================================================================
|
||||
BUG FIXES *bug-fixes-7*
|
||||
|
||||
@@ -917,6 +1214,9 @@ just before it is invoked
|
||||
VMS: Occasionally CR characters were inserted in the file. Expansion of
|
||||
environment variables was not correct. (Zoltan Arpadffy)
|
||||
|
||||
VMS: Improved low level char input (affects just console mode). (Zoltan
|
||||
Arpadffy)
|
||||
|
||||
UTF-8: When 'delcombine' is set "dw" only deleted the last combining character
|
||||
from the first character of the word.
|
||||
|
||||
@@ -1014,10 +1314,6 @@ doing that a SIGHUP may arrive and disturbe us, thus ignore it. (Scott
|
||||
Anderson) Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to
|
||||
handle. Added handle_signal().
|
||||
|
||||
When using "set laststatus=2 cmdheight=2" in the .gvimrc you may only get one
|
||||
line for the cmdline. (Christian Robinson) Invoke command_height() after the
|
||||
GUI has started up.
|
||||
|
||||
When completing a file name on the command line backslashes are required for
|
||||
white space. Was only done for a space, not for a Tab.
|
||||
|
||||
@@ -1286,7 +1582,7 @@ When reporting a conversion error the line number of the last error could be
|
||||
given. Now report the first encountered error.
|
||||
|
||||
When using ":e ++enc=name file" and iconv() was used for conversion an error
|
||||
caused a fallback to no conversion. Now replace a character with '?' and
|
||||
caused a fall-back to no conversion. Now replace a character with '?' and
|
||||
continue.
|
||||
|
||||
When opening a new buffer the local value of 'bomb' was not initialized from
|
||||
@@ -1332,4 +1628,191 @@ would be opened with these lines above the first window line.
|
||||
When using a command line window for search strings ":qa" would result in
|
||||
searching for "qa" instead of quitting all windows.
|
||||
|
||||
GUI: When scrolling with the scrollbar and there is a line that doesn't fit
|
||||
redrawing may fail. Make sure w_skipcol is valid before redrawing.
|
||||
|
||||
Limit the values of 'columns' and 'lines' to avoid an overflow in Rows *
|
||||
Columns. Fixed bad effects when running out of memory (command line would be
|
||||
reversed, ":qa!" resulted in ":!aq").
|
||||
|
||||
Motif: "gvim -iconic" opened the window anyway. (David Harrison)
|
||||
|
||||
There is a tiny chance that a symlink gets created between checking for an
|
||||
existing file and creating a file. Use the O_NOFOLLOW for open() if it's
|
||||
available.
|
||||
|
||||
In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of
|
||||
sticking to the first column.
|
||||
|
||||
When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was
|
||||
echoed anyway. Set terminal to raw mode in getcmdline().
|
||||
|
||||
Unix: ":w a;b~c" caused an error in expanding wildcards.
|
||||
|
||||
When appending to a file with ":w >>fname" in a buffer without a name, causing
|
||||
the buffer to use "fname", the modified flag was reset.
|
||||
|
||||
When appending to to current file the "not edited" flag would be reset.
|
||||
":w" would overwrite the file accidentally.
|
||||
|
||||
Unix: When filtering text with an external command Vim would still read input,
|
||||
causing text typed for the command (e.g., a password) to be eaten and echoed.
|
||||
Don't read input when the terminal is in cooked mode.
|
||||
|
||||
The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen)
|
||||
|
||||
Unix: When filtering text through a shell command some resulting text may be
|
||||
dropped. Now after detecting that the child has exited try reading some more
|
||||
of its output.
|
||||
|
||||
When inside input(), using "CTRL-R =" and the expression throws an exception
|
||||
the command line was not abandoned but it wasn't used either. Now abandon
|
||||
typing the command line.
|
||||
|
||||
'delcombine' was also used in Visual and Select mode and for commands like
|
||||
"cl". That was illogical and has been disabled.
|
||||
|
||||
When recording while a CursorHold autocommand was defined special keys would
|
||||
appear in the register. Now the CursorHold event is not triggered while
|
||||
recording.
|
||||
|
||||
Unix: the src/configure script used ${srcdir-.}, not all shells understand
|
||||
that. Use ${srcdir:-.} instead.
|
||||
|
||||
When editing file "a" which is a symlink to file "b" that doesn't exist,
|
||||
writing file "a" to create "b" and then ":split b" resulted in two buffers on
|
||||
the same file with two different swapfile names. Now set the inode in the
|
||||
buffer when creating a new file.
|
||||
|
||||
When 'esckeys' is not set don't send the xterm code to request the version
|
||||
string, because it may cause trouble in Insert mode.
|
||||
|
||||
When evaluating an expression for CTRL-R = on the command line it was possible
|
||||
to call a function that opens a new window, resulting in errors for
|
||||
incremental search, and many other nasty things were possible. Now use the
|
||||
|textlock| to disallow changing the buffer or jumping to another window
|
||||
to protect from unexpected behavior. Same for CTRL-\ e.
|
||||
|
||||
"d(" deleted the character under the cursor, while the documentation specified
|
||||
an exclusive motion. Vi also doesn't delete the character under the cursor.
|
||||
|
||||
Shift-Insert in Insert mode could put the cursor before the last character
|
||||
when it just fits in the window. In coladvance() don't stop at the window
|
||||
edge when filling with spaces and when in Insert mode. In mswin.vim avoid
|
||||
getting a beep from the "l" command.
|
||||
|
||||
Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in
|
||||
the dialog then Vim would insert <M-F4> in the text. Now it's ignored.
|
||||
|
||||
When ":silent! {cmd}" caused the swap file dialog, which isn't displayed,
|
||||
there would still be a hit-enter prompt.
|
||||
|
||||
Requesting the termresponse (|t_RV|) early may cause problems with "-c"
|
||||
arguments that invoke an external command or even "-c quit". Postpone it
|
||||
until after executing "-c" arguments.
|
||||
|
||||
When typing in Insert mode so that a new line is started, using CTRL-G u to
|
||||
break undo and start a new change, then joining the lines with <BS> caused
|
||||
undo info to be missing. Now reset the insertion start point.
|
||||
|
||||
Syntax HL: When a region start match has a matchgroup and an offset that
|
||||
happens to be after the end of the line then it continued in the next line and
|
||||
stopped at the region end match, making the region continue after that.
|
||||
Now check for the column being past the end of the line in syn_add_end_off().
|
||||
|
||||
When changing a file, setting 'swapfile' off and then on again, making another
|
||||
change and killing Vim, then some blocks may be missing from the swapfile.
|
||||
When 'swapfile' is switched back on mark all blocks in the swapfile as dirty.
|
||||
Added mf_set_dirty().
|
||||
|
||||
Expanding wildcards in a command like ":e aap;<>!" didn't work. Put
|
||||
backslashes before characters that are special to the shell. (Adri Verhoef)
|
||||
|
||||
A CursorHold autocommand would cause a message to be cleared. Don't show the
|
||||
special key for the event for 'showcmd'.
|
||||
|
||||
When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r
|
||||
!cmd foo<Tab>" also escape characters that are special for the shell:
|
||||
"!;&()<>".
|
||||
|
||||
When the name of the buffer was set by a ":r fname" command |cpo-f| no
|
||||
autocommands were triggered to notify about the change in the buffer list.
|
||||
|
||||
In the quickfix buffer 'bufhidden' was set to "delete", which caused closing
|
||||
the quickfix window to leave an unlisted "No Name" buffer behind every time.
|
||||
|
||||
Win32: when using two screens of different size, setting 'lines' to a large
|
||||
value didn't fill the whole screen. (SungHyun Nam)
|
||||
|
||||
Win32 installer: The generated _vimrc contained an absolute path to diff.exe.
|
||||
After upgrading it becomes invalid. Now use $VIMRUNTIME instead.
|
||||
|
||||
The command line was cleared to often when 'showmode' was set and ":silent
|
||||
normal vy" was used. Don't clear the command line unless the mode was
|
||||
actually displayed. Added the "mode_displayed" variable.
|
||||
|
||||
The "load session" toolbar item could not handle a space or other special
|
||||
characters in v:this_session.
|
||||
|
||||
":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2.
|
||||
|
||||
In a multi-byte file the foldmarker could be recognized in the trail byte.
|
||||
(Taro Muraoka)
|
||||
|
||||
Pasting with CTRL-V and menu didn't work properly when some commands are
|
||||
mapped. Use ":normal!" instead of ":normal". (Tony Apuzzo)
|
||||
|
||||
Crashed when expanding a file name argument in backticks.
|
||||
|
||||
In some situations the menu and scrollbar didn't work, when the value contains
|
||||
a CSI byte. (Yukihiro Nakadaira)
|
||||
|
||||
GTK GUI: When drawing the balloon focus changes and we might get a key release
|
||||
event that removed the balloon again. Ignore the key release event.
|
||||
|
||||
'titleold' was included in ":mkexrc" and ":mksession" files.
|
||||
|
||||
":set background&" didn't use the same logic as was used when starting up.
|
||||
|
||||
When "umask" is set such that nothing is writable then the viminfo file would
|
||||
be written without write permission. (Julian Bridle)
|
||||
|
||||
Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the
|
||||
other diff'ed window.
|
||||
|
||||
When editing in an xterm with a different number of colors than expected the
|
||||
screen would be cleared and redrawn, causing the message about the edited file
|
||||
to be cleared. Now set "keep_msg" to redraw the last message.
|
||||
|
||||
For a color terminal: When the Normal HL uses bold, possibly to make the color
|
||||
lighter, and another HL group specifies a color it might become light as well.
|
||||
Now reset bold if a HL group doesn't specify bold itself.
|
||||
|
||||
When using 256 color xterm the color 255 would show up as color 0. Use a
|
||||
short instead of a char to store the color number.
|
||||
|
||||
ml_get errors when searching for "\n\zs" in an empty file.
|
||||
|
||||
When selecting a block and using "$" to select until the end of every line and
|
||||
not highlighting the character under the cursor the first character of the
|
||||
block could be unhighlighted.
|
||||
|
||||
When counting words for the Visual block area and using "$" to select until
|
||||
the end of every line only up to the length of the last line was counted.
|
||||
|
||||
"dip" in trailing empty lines left one empty line behind.
|
||||
|
||||
The script ID was only remembered globally for each option. When a buffer- or
|
||||
window-local option was set the same "last set" location was changed for all
|
||||
buffers and windows. Now remember the script ID for each local option
|
||||
separately.
|
||||
|
||||
GUI: The "Replace All" button didn't handle backslashes in the replacement in
|
||||
the same way as "Replace". Escape backslashes so that they are taken
|
||||
literally.
|
||||
|
||||
When using Select mode from Insert mode and typing a key, causing lines to be
|
||||
deleted and a message displayed, delayed the effect of inserting the key.
|
||||
Now overwrite the message without delay.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vi_diff.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
|
||||
*vi_diff.txt* For Vim version 7.0aa. Last change: 2006 Jan 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -87,7 +87,9 @@ Length of an expanded string option
|
||||
Maximum display width Unix and Win32: 1024 characters, otherwise 255
|
||||
characters
|
||||
Maximum lhs of a mapping 50 characters.
|
||||
Number of highlighting different types: 223
|
||||
Number of different highlighting types: over 30000
|
||||
Range of a Number variable: -2147483648 to 2147483647 (more on 64 bit
|
||||
systems)
|
||||
|
||||
Information for undo and text in registers is kept in memory, thus when making
|
||||
(big) changes the amount of (virtual) memory available limits the number of
|
||||
|
||||
@@ -0,0 +1,574 @@
|
||||
.\" Traduction Lundi 7 août 2000 par Richard Hitier
|
||||
.\" (richard.hitier@dial.oleane.com)
|
||||
.\" Mise à jour de la traduction par David Blanchet
|
||||
.\" (david.blanchet@free.fr) 2005-01-17
|
||||
.\"
|
||||
.TH VIM 1 "22 Février 2002"
|
||||
.SH NOM
|
||||
vim \- Vi IMproved, éditeur de texte pour programmeurs
|
||||
.SH SYNOPSIS
|
||||
.br
|
||||
.B vim
|
||||
[options] [fichier ...]
|
||||
.br
|
||||
.B vim
|
||||
[options] \-
|
||||
.br
|
||||
.B vim
|
||||
[options] \-t marqueur
|
||||
.br
|
||||
.B vim
|
||||
[options] \-q [fichiererreurs]
|
||||
.PP
|
||||
.br
|
||||
.B ex
|
||||
.br
|
||||
.B view
|
||||
.br
|
||||
.B gvim
|
||||
.B gview
|
||||
.B evim
|
||||
.B eview
|
||||
.br
|
||||
.B rvim
|
||||
.B rview
|
||||
.B rgvim
|
||||
.B rgview
|
||||
.SH DESCRIPTION
|
||||
.B Vim
|
||||
est un éditeur de texte proposant une compatibilité ascendante
|
||||
avec Vi. Il permet d'éditer n'importe quel type de texte brut.
|
||||
Il est particulièrement adapté pour l'édition des programmes.
|
||||
.PP
|
||||
Il comporte de nombreuses améliorations par rapport à Vi : annulation sur
|
||||
plusieurs niveaux, fenêtres et tampons multiples, coloration syntaxique,
|
||||
édition en ligne de commande, complètement des noms de fichiers, aide en
|
||||
ligne, sélection visuelle, etc.
|
||||
Voir ":help vi_diff.txt" pour un résumé des différences entre
|
||||
.B Vim
|
||||
et Vi.
|
||||
.PP
|
||||
Pendant l'exécution de
|
||||
.B Vim
|
||||
\, une aide abondante est accessible au travers du système d'aide
|
||||
en ligne, grâce à la commande ":help".
|
||||
Voir la section AIDE EN LIGNE plus bas.
|
||||
.PP
|
||||
Le plus souvent
|
||||
.B Vim
|
||||
est démarré pour éditer un unique fichier avec la commande
|
||||
.PP
|
||||
vim fichier
|
||||
.PP
|
||||
Plus généralement,
|
||||
.B Vim
|
||||
est lancé avec :
|
||||
.PP
|
||||
vim [options] [listefichiers]
|
||||
.PP
|
||||
Si la listefichiers est omise, l'éditeur démarre avec un tampon vide.
|
||||
Autrement, l'une des quatre méthodes suivantes vous permettra de choisir
|
||||
un ou plusieurs fichiers à éditer.
|
||||
.TP 12
|
||||
fichier ...
|
||||
Une liste de noms de fichiers.
|
||||
Le premier sera le fichier courant et sera lu dans le tampon.
|
||||
Le curseur sera placé sur la première ligne du tampon.
|
||||
Vous pouvez passer aux autres fichiers avec la commande ":next".
|
||||
Pour éditer un fichier débutant par un tiret, faites précéder la
|
||||
liste de fichiers par "\-\-".
|
||||
.TP
|
||||
\-
|
||||
Le fichier à éditer est lu sur l'entrée standard (stdin). Les commandes sont
|
||||
lues depuis stderr, qui devrait être un terminal.
|
||||
.TP
|
||||
\-t {marqueur}
|
||||
Le fichier à éditer et la position initiale du curseur dépendent
|
||||
d'un "marqueur", qui est une sorte d'étiquette.
|
||||
{marqueur} est recherché dans le fichier des marqueurs, le fichier correspondant
|
||||
devient le fichier courant et la commande associée est exécutée.
|
||||
Principalement utile pour les programmes en C ; dans ce cas, {marqueur}
|
||||
peut être le nom d'une fonction.
|
||||
Au final, le fichier contenant cette fonction devient le fichier
|
||||
courant et le curseur est placé au début de la fonction.
|
||||
Voir ":help tag\-commands".
|
||||
.TP
|
||||
\-q [fichiererreurs]
|
||||
Démarre en mode Mise-au-point (QuickFix).
|
||||
Le fichier [fichiererreurs] est lu et la première erreur est affichée.
|
||||
Si [fichiererreurs] est omis, le nom du fichier est lu dans
|
||||
l'option 'errorfile' ("AztecC.Err" par défaut sur Amiga, "errors.err" sur les
|
||||
autres systèmes).
|
||||
La commande ":cn" permet de sauter aux erreurs suivantes.
|
||||
Voir ":help quickfix".
|
||||
.PP
|
||||
.B Vim
|
||||
se comporte différemment selon le nom de la commande (l'exécutable peut
|
||||
cependant être le même fichier).
|
||||
.TP 10
|
||||
vim
|
||||
La façon "normale", le comportement par défaut.
|
||||
.TP
|
||||
ex
|
||||
Démarre en mode Ex.
|
||||
La commande ":vi" permet de passer en mode Normal.
|
||||
Ce mode est également accessible avec l'argument "\-e".
|
||||
.TP
|
||||
view
|
||||
Démarre en mode Lecture-Seule. Vous êtes protégé de l'écriture accidentelle
|
||||
des fichiers. Ce mode est également accessible avec l'argument "\-R".
|
||||
.TP
|
||||
gvim gview
|
||||
La version graphique.
|
||||
Ouvre une nouvelle fenêtre.
|
||||
Également accessible avec l'argument "\-g".
|
||||
.TP
|
||||
evim eview
|
||||
La version graphique en mode Débutant (easy).
|
||||
Ouvre une nouvelle fenêtre.
|
||||
Également accessible avec l'argument "\-y".
|
||||
.TP
|
||||
rvim rview rgvim rgview
|
||||
Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de
|
||||
lancer des commandes du shell, ou de suspendre
|
||||
.B Vim.
|
||||
Également accessible avec l'argument "\-Z".
|
||||
.SH OPTIONS
|
||||
Les options peuvent être spécifiées dans n'importe quel ordre,
|
||||
avant ou après les noms de fichiers. Les options sans arguments
|
||||
peuvent être combinées après un unique tiret.
|
||||
.TP 12
|
||||
+[num]
|
||||
Place le curseur sur la ligne "num" dans le premier fichier.
|
||||
Si "num" est omis, le curseur sera placé sur la dernière ligne.
|
||||
.TP
|
||||
+/{motif}
|
||||
Place le curseur sur la première occurence de {motif} dans le premier fichier.
|
||||
Voir ":help search\-pattern" pour connaître les motifs de recherches
|
||||
disponibles.
|
||||
.TP
|
||||
+{commande}
|
||||
.TP
|
||||
\-c {commande}
|
||||
Exécute {commande} après la lecture du premier fichier.
|
||||
{commande} est interprétée comme une commande Ex.
|
||||
Si la {commande} contient des espaces, elle doit être entourée
|
||||
de doubles-apostrophes (cela dépend du shell utilisé).
|
||||
Exemple: Vim "+set si" main.c
|
||||
.br
|
||||
Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c".
|
||||
.TP
|
||||
\-S {fichier}
|
||||
Source {fichier} après la lecture du premier fichier.
|
||||
C'est équivalent à \-c "source {fichier}".
|
||||
{fichier} ne peut pas débuter par un '\-'.
|
||||
Si {fichier} est omis, "Session.vim" est utilisé (cela ne fonctionne que si
|
||||
\-S est le dernier argument).
|
||||
.TP
|
||||
\-\-cmd {commande}
|
||||
Comme "\-c", mais la commande est exécutée juste avant de traiter les fichiers
|
||||
vimrc.
|
||||
Vous pouvez utiliser jusqu'à 10 de ces commandes, indépendamment des
|
||||
commandes "\-c".
|
||||
.TP
|
||||
\-A
|
||||
Si
|
||||
.B Vim
|
||||
a été compilé avec le support de la fonctionnalité ARABIC pour l'édition de
|
||||
fichiers de droite à gauche et les claviers arabes, cette option lance
|
||||
.B Vim
|
||||
en mode Arabe, c.-à-d. que l'option 'arabic' est activée.
|
||||
Sinon, un message d'erreur est émis et
|
||||
.B Vim
|
||||
quitte.
|
||||
.TP
|
||||
\-b
|
||||
Mode Binaire.
|
||||
Active plusieurs options pour permettre l'édition
|
||||
d'un fichier binaire ou exécutable.
|
||||
.TP
|
||||
\-C
|
||||
Compatible. Active l'option 'compatible'.
|
||||
.B Vim
|
||||
se comportera alors quasiment comme Vi, même s'il existe un fichier .vimrc.
|
||||
.TP
|
||||
\-d
|
||||
Démarre en mode Diff.
|
||||
Deux ou trois noms de fichiers doivent être spécifiés.
|
||||
.B Vim
|
||||
ouvrira alors tous les fichiers et affichera leurs différences.
|
||||
Fonctionne comme vimdiff(1).
|
||||
.TP
|
||||
\-d {périph}
|
||||
Ouvre {périph} pour l'utiliser comme terminal.
|
||||
Uniquement sur Amiga.
|
||||
Exemple:
|
||||
"\-d con:20/30/600/150".
|
||||
.TP
|
||||
\-D
|
||||
Debogage. Passe en mode Débogage lors de l'exécution de la première commande
|
||||
d'un script.
|
||||
.TP
|
||||
\-e
|
||||
Démarre
|
||||
.B Vim
|
||||
en mode Ex, comme si l'exécutable s'appelait "ex".
|
||||
.TP
|
||||
\-E
|
||||
Démarre
|
||||
.B Vim
|
||||
en mode Ex amélioré, comme si l'exécutable "exim" avait été invoqué.
|
||||
.TP
|
||||
\-f
|
||||
Premier-plan (Foreground). Pour la version graphique,
|
||||
.B Vim
|
||||
ne forke pas et ne se détache pas du shell dans lequel il a été invoqué.
|
||||
Sur Amiga,
|
||||
.B Vim
|
||||
n'est pas relancé pour ouvrir une nouvelle fenêtre.
|
||||
Cette option est utile quand
|
||||
.B Vim
|
||||
est exécuté par un programme qui attend la fin de la session d'édition
|
||||
(par exemple mail).
|
||||
Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas.
|
||||
.TP
|
||||
\-\-nofork
|
||||
Premier-plan (Foreground). Pour la version graphique,
|
||||
.B Vim
|
||||
ne forkera pas et ne se détachera pas du shell dans lequel il a été lancé.
|
||||
.TP
|
||||
\-F
|
||||
Si
|
||||
.B Vim
|
||||
a été compilé avec le support de la fonctionnalité FKMAP pour l'édition de
|
||||
fichiers de droite à gauche et les claviers farsi, cette option lance
|
||||
.B Vim
|
||||
en mode Farsi, c.-à-d. avec les options 'fkmap' et 'rightleft' activées.
|
||||
Sinon, un message d'erreur est émis et
|
||||
.B Vim
|
||||
quitte.
|
||||
.TP
|
||||
\-g
|
||||
Si
|
||||
.B Vim
|
||||
a été compilé avec le support de l'IHM graphique, cette option active
|
||||
l'IHM graphique. Si le support n'a pas été compilé, un message d'erreur
|
||||
est émis et
|
||||
.B Vim
|
||||
quitte.
|
||||
.TP
|
||||
\-h
|
||||
Donne une aide succinte sur les arguments et les options de la ligne de
|
||||
commande. Après cela,
|
||||
.B Vim
|
||||
quitte.
|
||||
.TP
|
||||
\-H
|
||||
Si
|
||||
.B Vim
|
||||
a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de
|
||||
fichiers de droite à gauche et les claviers hébreu, cette option lance
|
||||
.B Vim
|
||||
en mode Hebreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées.
|
||||
Sinon, un message d'erreur est émis et
|
||||
.B Vim
|
||||
quitte.
|
||||
.TP
|
||||
\-i {viminfo}
|
||||
Lorsque l'utilisation d'un fichier viminfo est activée, cette option indique
|
||||
le nom de fichier à utiliser à la place de "~/.viminfo" par défaut.
|
||||
Il est possible d'empêcher l'utilisation d'un fichier ".viminfo", en
|
||||
spécifiant le nom de fichier "NONE".
|
||||
.TP
|
||||
\-L
|
||||
Comme \-r.
|
||||
.TP
|
||||
\-l
|
||||
Mode Lisp.
|
||||
Active les options 'lisp' et 'showmatch'.
|
||||
.TP
|
||||
\-m
|
||||
Empêche la modification des fichiers.
|
||||
Désactive l'option 'write'.
|
||||
Vous pouvez toujours modifier le tampon, mais il vous sera impossible
|
||||
d'écrire le fichier.
|
||||
.TP
|
||||
\-M
|
||||
N'autorise aucune modification. les options 'modifiable' et 'write' sont
|
||||
desactivées, de sorte que les changements ne sont pas autorisés et que les
|
||||
fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées
|
||||
pour autoriser les modifications.
|
||||
.TP
|
||||
\-N
|
||||
Mode Non-compatible. Désactive l'option 'compatible'.
|
||||
Cela améliorera le comportement de
|
||||
.B Vim
|
||||
\, mais il sera moins conforme à celui de Vi, même s'il n'existe aucun
|
||||
fichier ".vimrc".
|
||||
.TP
|
||||
\-n
|
||||
N'utilise pas de fichier d'échange (swapfile).
|
||||
Le recouvrement après un plantage sera impossible.
|
||||
Utile pour éditer un fichier sur un support très lent (disquette par ex.).
|
||||
Également activable avec ":set uc=0".
|
||||
Il est possible de l'annuler avec ":set uc=200".
|
||||
.TP
|
||||
\-nb
|
||||
Devient un serveur d'édition pour NetBeans. Consulter la documentation à ce
|
||||
sujet pour davantage de détails.
|
||||
.TP
|
||||
\-o[N]
|
||||
Ouvre N fenêtres les unes au-dessus des autres.
|
||||
Quand N est omis, ouvre une fenêtre pour chaque fichier.
|
||||
.TP
|
||||
\-O[N]
|
||||
Ouvre N fenêtres côte à côte.
|
||||
Quand N est omis, ouvre une fenêtre pour chaque fichier fichier.
|
||||
.TP
|
||||
\-R
|
||||
Mode Lecture-Seule.
|
||||
Active l'option 'readonly'.
|
||||
Vous pouvez toujours éditer le tampon, mais il vous sera impossible de
|
||||
d'écraser accidentellement un fichier.
|
||||
Si vous voulez écraser un fichier, ajoutez un point d'exclamation à la commande
|
||||
Ex, comme dans ":w!".
|
||||
L'option \-R impose l'option \-n (voir ci-dessus).
|
||||
L'option 'readonly' peut être désactivée avec ":set noro".
|
||||
Voir ":help 'readonly'".
|
||||
.TP
|
||||
\-r
|
||||
Donne la liste des fichiers d'échange, avec des informations pour les utiliser
|
||||
à des fins de recouvrement.
|
||||
.TP
|
||||
\-r {file}
|
||||
Mode Recouvrement.
|
||||
Utilise le fichier d'échange pour récouvrer d'une session d'édition plantée.
|
||||
Le fichier d'échange est un fichier avec le même nom que le fichier texte,
|
||||
suivi du suffixe ".swp".
|
||||
Voir ":help recovery".
|
||||
.TP
|
||||
\-s
|
||||
Mode Silencieux. Disponible uniquement quand
|
||||
.B Vim
|
||||
est lancé en tant que "ex" ou quand l'option "\-e" a été spécifiée avant
|
||||
l'option "\-s".
|
||||
.TP
|
||||
\-s {scriptEntrée}
|
||||
Lit le fichier de script {scriptEntrée}.
|
||||
Les caractères du fichier sont interprétés comme si vous les tapiez.
|
||||
La commande ":source! {scriptEntrée}" donne le même résultat.
|
||||
Si la fin du fichier est atteinte avant que l'éditeur quitte, les caractères
|
||||
suivants sont lus depuis le clavier.
|
||||
.TP
|
||||
\-T {terminal}
|
||||
Indique à
|
||||
.B Vim
|
||||
le nom du terminal utilisé.
|
||||
Cela n'est requis que lorsque la détection automatique échoue.
|
||||
Le {terminal} devrait être connu de
|
||||
.B Vim
|
||||
(intégré) ou défini dans le fichier termcap ou terminfo.
|
||||
.TP
|
||||
\-u {vimrc}
|
||||
Utilise les commandes du fichier {vimrc} pour les initialisations.
|
||||
Toutes les autres initialisations sont omises.
|
||||
À utiliser pour éditer un type de fichiers particulier.
|
||||
Cela permet aussi d'omettre toute initialisation en spécifiant le nom de
|
||||
fichier "NONE".
|
||||
Voir ":help initialization" dans Vim pour davantage de détails.
|
||||
.TP
|
||||
\-U {gvimrc}
|
||||
Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM
|
||||
graphique.
|
||||
Toutes les autres initialisations graphiques sont omises.
|
||||
Cela permet aussi d'omettre toute initialisation graphique en spécifiant le nom
|
||||
de fichier "NONE".
|
||||
Voir ":help gui\-init" dans Vim pour davantage de détails.
|
||||
.TP
|
||||
\-V[N]
|
||||
Mode Verbeux.
|
||||
Donne des messages à propos des fichiers sourcés, ainsi que sur la lecture
|
||||
et les écritures dans le fichier viminfo. le nombre optionnel N précise la
|
||||
valeur de l'option 'verbose' (10 par défaut).
|
||||
.TP
|
||||
\-v
|
||||
Démarre
|
||||
.B Vim
|
||||
en mode Vi, comme si l'exécutable s'appelait "vi". Cela n'a d'effet que si
|
||||
l'exécutable invoqué est "ex".
|
||||
.TP
|
||||
\-w {scriptSortie}
|
||||
Tous les caractères que vous tapez sont enregistrés dans le fichier
|
||||
{scriptSortie}, jusqu'à ce que vous quittiez
|
||||
.B Vim.
|
||||
C'est utile quand vous voulez créer un fichier de script à utiliser avec
|
||||
"vim \-s" ou ":source!".
|
||||
Si le fichier {scriptSortie} existe, les caractères sont ajoutés à la fin.
|
||||
.TP
|
||||
\-W {scriptSortie}
|
||||
Comme \-w, mais un fichier existant sera écrasé.
|
||||
.TP
|
||||
\-x
|
||||
Chiffre les fichiers lors de l'écriture. Une clé de chiffrement sera demandée.
|
||||
.TP
|
||||
\-X
|
||||
Ne se connecte pas au serveur X. Accélère le temps de démarrage dans un
|
||||
terminal, mais le titre de la fenêtre et le presse-papier seront inaccessibles.
|
||||
.TP
|
||||
\-y
|
||||
Démarre
|
||||
.B Vim
|
||||
en mode Débutant (easy), comme si l'exécutable s'appelait "evim" ou "eview".
|
||||
Donne à
|
||||
.B Vim
|
||||
un comportement plus proche des éditeurs « cliquez-tapez ».
|
||||
.TP
|
||||
\-Z
|
||||
Mode restreint. Fonctionne comme si l'exécutable commençait par la lettre 'r'.
|
||||
.TP
|
||||
\-\-
|
||||
Délimite la fin des options.
|
||||
Les arguments qui suivent seront considérés comme des noms de fichiers.
|
||||
Cela permet d'éditer des fichier débutant par un '\-'.
|
||||
.TP
|
||||
\-\-echo\-wid
|
||||
IHM graphique GTK uniquement : retourne la Window ID sur stdout.
|
||||
.TP
|
||||
\-\-help
|
||||
Donne un message d'aide et quitte, comme "\-h".
|
||||
.TP
|
||||
\-\-literal
|
||||
Prend les arguments de noms de fichiers littéralement, sans étendre les
|
||||
jokers. N'a aucun effet sur Unix, où le shell étend les jokers.
|
||||
.TP
|
||||
\-\-noplugin
|
||||
Ne charge pas les greffons. Implicite avec \-u NONE.
|
||||
.TP
|
||||
\-\-remote
|
||||
Se connecte à un serveur Vim et lui fait éditer les fichiers spécifiés dans
|
||||
le reste des arguments. Si aucun serveur n'est trouvé, un avertissement est
|
||||
émis et les fichiers sont édités dans le Vim courant.
|
||||
.TP
|
||||
\-\-remote\-expr {expr}
|
||||
Se connecte à un serveur Vim, y évalue {expr} et affiche le résultat sur la
|
||||
sortie standard (stdout).
|
||||
.TP
|
||||
\-\-remote\-send {touches}
|
||||
Se connecte à un serveur Vim et y envoie {touches}.
|
||||
.TP
|
||||
\-\-remote\-silent
|
||||
Comme \-\-remote, mais sans émettre d'avertissement si aucun serveur n'est
|
||||
trouvé.
|
||||
.TP
|
||||
\-\-remote\-wait
|
||||
Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours
|
||||
d'édition.
|
||||
.TP
|
||||
\-\-remote\-wait\-silent
|
||||
Comme \-\-remote\-wait, mais sans émettre d'avertissement si aucun serveur n'est
|
||||
trouvé.
|
||||
.TP
|
||||
\-\-serverlist
|
||||
Donne la liste des noms de tous les serveurs Vim disponibles.
|
||||
.TP
|
||||
\-\-servername {nom}
|
||||
Utilise {nom} pour le nom de serveur. Ce nom est donné au Vim courant, à moins
|
||||
qu'il ne soit utilisé avec un argument \-\-remote. Dans ce cas, il s'agit du nom
|
||||
du serveur auquel se connecter.
|
||||
.TP
|
||||
\-\-socketid {id}
|
||||
IHM graphique GTK+ uniquement : utilise le mécanisme GtkPlug pour faire
|
||||
fonctionner gvim dans une autre fenêtre.
|
||||
.TP
|
||||
\-\-version
|
||||
Affiche les informations sur la version puis quitte.
|
||||
.SH AIDE EN LIGNE
|
||||
Taper ":help" dans
|
||||
.B Vim
|
||||
pour commencer.
|
||||
Taper ":help sujet" pour obtenir de l'aide sur un sujet précis.
|
||||
Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ".
|
||||
Utiliser <Tab> et CTRL\-D pour compléter les sujets (":help
|
||||
cmdline\-completion").
|
||||
Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit
|
||||
à un autre (comme des liens hypertextes, voir ":help").
|
||||
L'ensemble des fichiers de la documentation peut être consulté de cette
|
||||
façon, par exemple ":help syntax.txt".
|
||||
.SH FICHIERS
|
||||
.TP 15
|
||||
/usr/local/lib/vim/doc/*.txt
|
||||
Les fichiers de la documentation de
|
||||
.B Vim.
|
||||
Utiliser ":help doc\-file\-list" pour obtenir la liste complète.
|
||||
.TP
|
||||
/usr/local/lib/vim/doc/tags
|
||||
Le fichier des marqueurs utilisé pour trouver les informations dans les
|
||||
fichiers de la documentation.
|
||||
.TP
|
||||
/usr/local/lib/vim/syntax/syntax.vim
|
||||
Initialisation de la syntaxe pour l'ensemble du système.
|
||||
.TP
|
||||
/usr/local/lib/vim/syntax/*.vim
|
||||
Fichiers de syntaxe pour différents langages.
|
||||
.TP
|
||||
/usr/local/lib/vim/vimrc
|
||||
Initialisation de
|
||||
.B Vim
|
||||
pour l'ensemble du système.
|
||||
.TP
|
||||
/usr/local/lib/vim/gvimrc
|
||||
Initialisation de gvim pour l'ensemble du système.
|
||||
.TP
|
||||
/usr/local/lib/vim/optwin.vim
|
||||
Script utilisé pour la commande ":options", une manière pratique de consulter
|
||||
et de modifier les options.
|
||||
.TP
|
||||
/usr/local/lib/vim/menu.vim
|
||||
Initialisation des menus de gvim pour l'ensemble du système.
|
||||
.TP
|
||||
/usr/local/lib/vim/bugreport.vim
|
||||
Script pour générer un rapport de bogue. Voir ":help bugs".
|
||||
.TP
|
||||
/usr/local/lib/vim/filetype.vim
|
||||
Script pour détecter le type d'un fichier d'après son nom.
|
||||
Voir ":help 'filetype'".
|
||||
.TP
|
||||
/usr/local/lib/vim/scripts.vim
|
||||
Script pour détecter le type d'un fichier d'après son contenu.
|
||||
Voir ":help 'filetype'".
|
||||
.TP
|
||||
/usr/local/lib/vim/*.ps
|
||||
Fichiers utilisés pour l'impression PostScript.
|
||||
.PP
|
||||
Pour disposer d'informations récentes, consulter le site Internet de VIM :
|
||||
.br
|
||||
<URL:http://www.vim.org/>
|
||||
.SH VOIR AUSSI
|
||||
vimtutor(1)
|
||||
.SH AUTEUR
|
||||
La majeure partie de
|
||||
.B Vim
|
||||
a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs.
|
||||
Voir ":help credits" dans
|
||||
.B Vim.
|
||||
.br
|
||||
.B Vim
|
||||
est basé sur Stevie, réalisé par Tim Thompson,
|
||||
Tony Andrews et G.R. (Fred) Walter.
|
||||
Toutefois, pratiquement rien du code original ne subsiste.
|
||||
.SH BOGUES
|
||||
Probablement.
|
||||
Voir ":help todo" pour consulter la liste des problèmes connus.
|
||||
.PP
|
||||
NOTE : Remarquez que bon nombre de points, qui pourraient être considérés comme
|
||||
des bugs par certains, sont en fait dus à une reproduction trop fidèle
|
||||
du comportement de Vi. Et si vous pensez que d'autres points sont des
|
||||
bugs "parce que Vi le fait différemment", vous devriez jeter un oeil
|
||||
attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim).
|
||||
Regardez aussi les options 'compatible' et 'coptions'.
|
||||
.SH TRADUCTION
|
||||
Cette page de manuel a été traduite par Richard Hitier.
|
||||
<richard.hitier@dial.oleane.com> 2000-08-07.
|
||||
.br
|
||||
Cette page de manuel a été mise à jour par David Blanchet.
|
||||
<david.blanchet@free.fr> 2005-01-17.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*visual.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
|
||||
*visual.txt* For Vim version 7.0aa. Last change: 2006 Jan 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -86,7 +86,7 @@ Visual Normal blockwise Visual linewise Visual
|
||||
blockwise Visual Visual Normal linewise Visual
|
||||
linewise Visual Visual blockwise Visual Normal
|
||||
|
||||
*gv* *v_gv*
|
||||
*gv* *v_gv* *reselect-Visual*
|
||||
gv Start Visual mode with the same area as the previous
|
||||
area and the same mode.
|
||||
In Visual mode the current and the previous Visual
|
||||
@@ -258,6 +258,11 @@ operator character: "v{move-around}3>" (move lines 3 indents to the right).
|
||||
The {move-around} is any sequence of movement commands. Note the difference
|
||||
with {motion}, which is only ONE movement command.
|
||||
|
||||
Another way to operate on the Visual area is using the |/\%V| item in a
|
||||
pattern. For example, to replace all '(' in the Visual area with '#': >
|
||||
|
||||
:%s/\%V(/X/g
|
||||
|
||||
==============================================================================
|
||||
5. Blockwise operators *blockwise-operators*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*windows.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
|
||||
*windows.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -68,6 +68,9 @@ inactive no no ' '
|
||||
Note: All CTRL-W commands can also be executed with |:wincmd|, for those
|
||||
places where a Normal mode command can't be used or is inconvenient.
|
||||
|
||||
The main Vim window can hold several split windows. There are also tab pages
|
||||
|tab-page|, each of which can hold multiple windows.
|
||||
|
||||
==============================================================================
|
||||
2. Starting Vim *windows-starting*
|
||||
|
||||
@@ -255,6 +258,9 @@ CTRL-W c *CTRL-W_c* *:clo* *:close*
|
||||
:clo[se][!] Close current window. When the 'hidden' option is set, or
|
||||
when the buffer was changed and the [!] is used, the buffer
|
||||
becomes hidden (unless there is another window editing it).
|
||||
When there is only one window in the current tab page and
|
||||
there is another tab page, this closes the current tab page.
|
||||
|tab-page|.
|
||||
This command fails when: *E444*
|
||||
- There is only one window on the screen.
|
||||
- When 'hidden' is not set, [!] is not used, the buffer has
|
||||
@@ -271,6 +277,8 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C*
|
||||
:hid[e] Quit current window, unless it is the last window on the
|
||||
screen. The buffer becomes hidden (unless there is another
|
||||
window editing it or 'bufhidden' is "unload" or "delete").
|
||||
If the window is the last one in the current tab page the tab
|
||||
page is closed. |tab-page|
|
||||
The value of 'hidden' is irrelevant for this command.
|
||||
Changes to the buffer are not written and won't get lost, so
|
||||
this is a "safe" command.
|
||||
@@ -551,6 +559,9 @@ can also get to them with the buffer list commands, like ":bnext".
|
||||
Rearrange the screen to open one window for each argument.
|
||||
All other windows are closed. When a count is given, this is
|
||||
the maximum number of windows to open.
|
||||
With the |:tab| modifier open a tab page for each argument.
|
||||
When there are more arguments than 'tabpagemax' further ones
|
||||
become split windows in the last tab page.
|
||||
When the 'hidden' option is set, all buffers in closed windows
|
||||
become hidden.
|
||||
When 'hidden' is not set, and the 'autowrite' option is set,
|
||||
@@ -620,7 +631,8 @@ can also get to them with the buffer list commands, like ":bnext".
|
||||
CTRL-W w
|
||||
:{cmd}
|
||||
etc.
|
||||
< When an error is detected on one window, further
|
||||
< This only operates in the current tab page.
|
||||
When an error is detected on one window, further
|
||||
windows will not be visited.
|
||||
The last window (or where an error occurred) becomes
|
||||
the current window.
|
||||
@@ -628,7 +640,7 @@ can also get to them with the buffer list commands, like ":bnext".
|
||||
{cmd} must not open or close windows or reorder them.
|
||||
{not in Vi} {not available when compiled without the
|
||||
|+listcmds| feature}
|
||||
Also see |:argdo| and |:bufdo|.
|
||||
Also see |:tabdo|, |:argdo| and |:bufdo|.
|
||||
|
||||
*:bufdo*
|
||||
:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list.
|
||||
@@ -654,7 +666,7 @@ can also get to them with the buffer list commands, like ":bnext".
|
||||
each buffer.
|
||||
{not in Vi} {not available when compiled without the
|
||||
|+listcmds| feature}
|
||||
Also see |:argdo| and |:windo|.
|
||||
Also see |:tabdo|, |:argdo| and |:windo|.
|
||||
|
||||
Examples: >
|
||||
|
||||
@@ -704,6 +716,11 @@ CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
|
||||
{not available when the |+file_in_path| feature was disabled
|
||||
at compile time}
|
||||
|
||||
CTRL-W F *CTRL-W_F*
|
||||
Split current window in two. Edit file name under cursor and
|
||||
jump to the line number following the file name. See |gF| for
|
||||
details on how the line number is obtained.
|
||||
|
||||
Also see |CTRL-W_CTRL-I|: open window for an included file that includes
|
||||
the keyword under the cursor.
|
||||
|
||||
@@ -939,9 +956,10 @@ list of buffers. |unlisted-buffer|
|
||||
:bw[ipeout][!] {bufname}
|
||||
:N,Mbw[ipeout][!]
|
||||
:bw[ipeout][!] N1 N2 ...
|
||||
Like |:bdelete|, but really delete the buffer. All marks in
|
||||
this buffer become invalid, option settings are lost, etc.
|
||||
Don't use this unless you know what you are doing.
|
||||
Like |:bdelete|, but really delete the buffer. Everything
|
||||
related to the buffer is lost. All marks in this buffer
|
||||
become invalid, option settings are lost, etc. Don't use this
|
||||
unless you know what you are doing.
|
||||
|
||||
:[N]bun[load][!] *:bun* *:bunload* *E515*
|
||||
:bun[load][!] [N]
|
||||
@@ -992,9 +1010,11 @@ list of buffers. |unlisted-buffer|
|
||||
Split window and edit buffer for {filename} from the buffer
|
||||
list. This will also edit a buffer that is not in the buffer
|
||||
list, without setting the 'buflisted' flag.
|
||||
Note: If what you want to do is split the buffer, make a copy
|
||||
under another name, you can do it this way: >
|
||||
:w foobar | sp #
|
||||
|
||||
*:bn* *:bnext* *E87*
|
||||
:[N]bn[ext][!] [N]
|
||||
:[N]bn[ext][!] [N] *:bn* *:bnext* *E87*
|
||||
Go to [N]th next buffer in buffer list. [N] defaults to one.
|
||||
Wraps around the end of the buffer list.
|
||||
See |:buffer-!| for [!].
|
||||
@@ -1071,6 +1091,8 @@ list of buffers. |unlisted-buffer|
|
||||
of windows opened ('winwidth' if |:vertical| was prepended).
|
||||
Buf/Win Enter/Leave autocommands are not executed for the new
|
||||
windows here, that's only done when they are really entered.
|
||||
When the |:tab| modifier is used new windows are opended in a
|
||||
new tab, up to 'tabpagemax'.
|
||||
|
||||
Note: All the commands above that start editing another buffer, keep the
|
||||
'readonly' flag as it was. This differs from the ":edit" command, which sets
|
||||
@@ -1089,9 +1111,10 @@ purposes. A few options can be set to change the behavior of a buffer:
|
||||
|
||||
A few useful kinds of a buffer:
|
||||
|
||||
quickfix Used to contain the error list. See |:cwindow|. This command
|
||||
sets the 'buftype' option to "quickfix". You are not supposed
|
||||
to change this! 'swapfile' is off.
|
||||
quickfix Used to contain the error list or the location list. See
|
||||
|:cwindow| and |:lwindow|. This command sets the 'buftype'
|
||||
option to "quickfix". You are not supposed to change this!
|
||||
'swapfile' is off.
|
||||
|
||||
help Contains a help file. Will only be created with the |:help|
|
||||
command. The flag that indicates a help buffer is internal
|
||||
@@ -1100,18 +1123,18 @@ help Contains a help file. Will only be created with the |:help|
|
||||
|
||||
directory Displays directory contents. Can be used by a file explorer
|
||||
plugin. The buffer is created with these settings: >
|
||||
:set buftype=nowrite
|
||||
:set bufhidden=delete
|
||||
:set noswapfile
|
||||
:setlocal buftype=nowrite
|
||||
:setlocal bufhidden=delete
|
||||
:setlocal noswapfile
|
||||
< The buffer name is the name of the directory and is adjusted
|
||||
when using the |:cd| command.
|
||||
|
||||
scratch Contains text that can be discarded at any time. It is kept
|
||||
when closing the window, it must be deleted explicitly.
|
||||
Settings: >
|
||||
:set buftype=nofile
|
||||
:set bufhidden=hide
|
||||
:set noswapfile
|
||||
:setlocal buftype=nofile
|
||||
:setlocal bufhidden=hide
|
||||
:setlocal noswapfile
|
||||
< The buffer name can be used to identify the buffer.
|
||||
|
||||
*unlisted-buffer*
|
||||
@@ -1119,7 +1142,7 @@ unlisted The buffer is not in the buffer list. It is not used for
|
||||
normal editing, but to show a help file, remember a file name
|
||||
or marks. The ":bdelete" command will also set this option,
|
||||
thus it doesn't completely delete the buffer. Settings: >
|
||||
:set nobuflisted
|
||||
:setlocal nobuflisted
|
||||
<
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Aug 29
|
||||
" Last Change: 2006 Mar 01
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -16,7 +16,7 @@ set cpo&vim
|
||||
augroup filetypedetect
|
||||
|
||||
" Ignored extensions
|
||||
au BufNewFile,BufRead *.orig,*.bak,*.old,*.new,*.rpmsave,*.rpmnew
|
||||
au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
|
||||
\ exe "doau filetypedetect BufRead " . expand("<afile>:r")
|
||||
au BufNewFile,BufRead *~
|
||||
\ let s:name = expand("<afile>") |
|
||||
@@ -26,7 +26,7 @@ au BufNewFile,BufRead *~
|
||||
\ endif |
|
||||
\ unlet s:name |
|
||||
\ unlet s:short
|
||||
au BufNewFile,BufRead *.in
|
||||
au BufNewFile,BufRead ?\+.in
|
||||
\ if expand("<afile>:t") != "configure.in" |
|
||||
\ exe "doau filetypedetect BufRead " . expand("<afile>:r") |
|
||||
\ endif
|
||||
@@ -285,6 +285,9 @@ au BufNewFile,BufRead */.calendar/*,
|
||||
" C#
|
||||
au BufNewFile,BufRead *.cs setf cs
|
||||
|
||||
" Cfengine
|
||||
au BufNewFile,BufRead cfengine.conf setf cfengine
|
||||
|
||||
" Comshare Dimension Definition Language
|
||||
au BufNewFile,BufRead *.cdl setf cdl
|
||||
|
||||
@@ -396,7 +399,7 @@ fun! s:FTent()
|
||||
setf dtd
|
||||
endfun
|
||||
|
||||
" Clipper (or FoxPro)
|
||||
" Clipper (or FoxPro; could also be eviews)
|
||||
au BufNewFile,BufRead *.prg
|
||||
\ if exists("g:filetype_prg") |
|
||||
\ exe "setf " . g:filetype_prg |
|
||||
@@ -603,6 +606,9 @@ au BufNewFile,BufRead *.gpi setf gnuplot
|
||||
" GrADS scripts
|
||||
au BufNewFile,BufRead *.gs setf grads
|
||||
|
||||
" Gretl
|
||||
au BufNewFile,BufRead *.gretl setf gretl
|
||||
|
||||
" Groovy
|
||||
au BufNewFile,BufRead *.groovy setf groovy
|
||||
|
||||
@@ -885,6 +891,9 @@ au BufNewFile,BufRead *.mf setf mf
|
||||
" MetaPost
|
||||
au BufNewFile,BufRead *.mp setf mp
|
||||
|
||||
" MGL
|
||||
au BufNewFile,BufRead *.mgl setf mgl
|
||||
|
||||
" MMIX or VMS makefile
|
||||
au BufNewFile,BufRead *.mms call s:FTmms()
|
||||
|
||||
@@ -1288,6 +1297,9 @@ au BufNewFile,BufRead *.rexx,*.rex setf rexx
|
||||
" R (Splus)
|
||||
au BufNewFile,BufRead *.s,*.S setf r
|
||||
|
||||
" R Help file
|
||||
au BufNewFile,BufRead *.rd,*.Rd setf rd
|
||||
|
||||
" Rexx, Rebol or R
|
||||
au BufNewFile,BufRead *.r,*.R call s:FTr()
|
||||
|
||||
@@ -1346,6 +1358,9 @@ au BufNewFile,BufRead *.rtf setf rtf
|
||||
" Ruby
|
||||
au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec setf ruby
|
||||
|
||||
" Rantfile is like Ruby
|
||||
au BufNewFile,BufRead [rR]antfile,*.rant setf ruby
|
||||
|
||||
" S-lang (or shader language!)
|
||||
au BufNewFile,BufRead *.sl setf slang
|
||||
|
||||
@@ -1609,9 +1624,19 @@ au BufNewFile,BufRead /etc/sysctl.conf setf sysctl
|
||||
" Sudoers
|
||||
au BufNewFile,BufRead /etc/sudoers,sudoers.tmp setf sudoers
|
||||
|
||||
" Tads (or Nroff)
|
||||
" If the first line starts with '#' and contains 'perl' it's probably a Perl
|
||||
" file.
|
||||
fun! s:FTperl()
|
||||
if getline(1)[0] == '#' && getline(1) =~ 'perl'
|
||||
setf perl
|
||||
return 1
|
||||
endif
|
||||
return 0
|
||||
endfun
|
||||
|
||||
" Tads (or Nroff or Perl test file)
|
||||
au BufNewFile,BufRead *.t
|
||||
\ if !s:FTnroff() | setf tads | endif
|
||||
\ if !s:FTnroff() && !s:FTperl() | setf tads | endif
|
||||
|
||||
" Tags
|
||||
au BufNewFile,BufRead tags setf tags
|
||||
@@ -1619,8 +1644,8 @@ au BufNewFile,BufRead tags setf tags
|
||||
" TAK
|
||||
au BufNewFile,BufRead *.tak setf tak
|
||||
|
||||
" Tcl
|
||||
au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk setf tcl
|
||||
" Tcl (JACL too)
|
||||
au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl setf tcl
|
||||
|
||||
" TealInfo
|
||||
au BufNewFile,BufRead *.tli setf tli
|
||||
@@ -1636,19 +1661,29 @@ au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
|
||||
au BufNewFile,BufRead *.tex call s:FTtex()
|
||||
|
||||
fun! s:FTtex()
|
||||
let n = 1
|
||||
while n < 10 && n < line("$")
|
||||
let line = getline(n)
|
||||
if line =~ '^\s*\\\%(documentclass\>\|usepackage\>\|begin{\)'
|
||||
setf tex
|
||||
return
|
||||
elseif line =~ '^\s*\\\%(start\l\+\|setup\l\+\|usemodule\)\>'
|
||||
setf context
|
||||
return
|
||||
let lnum = 1
|
||||
let checked = 0
|
||||
while checked < 25 && lnum < line("$")
|
||||
let line = getline(lnum)
|
||||
if line !~ '^\s*%'
|
||||
if line =~ '^\s*\\\%(documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>\)'
|
||||
setf tex
|
||||
return
|
||||
elseif line =~ '^\s*\\\%(start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\)\>'
|
||||
setf context
|
||||
return
|
||||
endif
|
||||
let checked = checked + 1
|
||||
endif
|
||||
let n = n + 1
|
||||
let lnum = lnum + 1
|
||||
endwhile
|
||||
setf tex
|
||||
|
||||
" Didn't recognize anything, guess.
|
||||
if exists("g:tex_flavour") && g:tex_flavour == "context"
|
||||
setf context
|
||||
else
|
||||
setf tex
|
||||
endif
|
||||
endfun
|
||||
|
||||
" Context
|
||||
@@ -1669,6 +1704,9 @@ au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
|
||||
" TPP - Text Presentation Program
|
||||
au BufNewFile,BufReadPost *.tpp setf tpp
|
||||
|
||||
" Trustees
|
||||
au BufNewFile,BufRead trustees.conf setf trustees
|
||||
|
||||
" TSS - Geometry
|
||||
au BufNewFile,BufReadPost *.tssgm setf tssgm
|
||||
|
||||
@@ -1882,6 +1920,9 @@ au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
|
||||
" Most of these should call s:StarSetf() to avoid names ending in .gz and the
|
||||
" like are used.
|
||||
|
||||
" Asterisk config file
|
||||
au BufNewFile,BufRead *asterisk/*.conf* call s:StarSetf('asterisk')
|
||||
|
||||
" BIND zone
|
||||
au BufNewFile,BufRead /var/named/* call s:StarSetf('bindzone')
|
||||
|
||||
|
||||
73
runtime/ftplugin/eruby.vim
Normal file
73
runtime/ftplugin/eruby.vim
Normal file
@@ -0,0 +1,73 @@
|
||||
" Vim filetype plugin
|
||||
" Language: eRuby
|
||||
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if (exists("b:did_ftplugin"))
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
" Define some defaults in case the included ftplugins don't set them.
|
||||
let s:undo_ftplugin = ""
|
||||
let s:browsefilter = "Ruby Files (*.rb)\t*.rb\n" .
|
||||
\ "HTML Files (*.html, *.htm)\t*.html;*.htm\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
let s:match_words = ""
|
||||
|
||||
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||
unlet b:did_ftplugin
|
||||
|
||||
" Override our defaults if these were set by an included ftplugin.
|
||||
if exists("b:undo_ftplugin")
|
||||
let s:undo_ftplugin = b:undo_ftplugin
|
||||
unlet b:undo_ftplugin
|
||||
endif
|
||||
if exists("b:browsefilter")
|
||||
let s:browsefilter = b:browsefilter
|
||||
unlet b:browsefilter
|
||||
endif
|
||||
if exists("b:match_words")
|
||||
let s:match_words = b:match_words
|
||||
unlet b:match_words
|
||||
endif
|
||||
|
||||
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" Combine the new set of values with those previously included.
|
||||
if exists("b:undo_ftplugin")
|
||||
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
|
||||
endif
|
||||
if exists ("b:browsefilter")
|
||||
let s:browsefilter = b:browsefilter . s:browsefilter
|
||||
endif
|
||||
if exists("b:match_words")
|
||||
let s:match_words = b:match_words . ',' . s:match_words
|
||||
endif
|
||||
|
||||
" Change the browse dialog on Win32 to show mainly eRuby-related files
|
||||
if has("gui_win32")
|
||||
let b:browsefilter="eRuby Files (*.rhtml)\t*.rhtml\n" . s:browsefilter
|
||||
endif
|
||||
|
||||
" Load the combined list of match_words for matchit.vim
|
||||
if exists("loaded_matchit")
|
||||
let b:match_words = s:match_words
|
||||
endif
|
||||
|
||||
" TODO: comments=
|
||||
setlocal commentstring=<%#%s%>
|
||||
|
||||
let b:undo_ftplugin = "setl cms< "
|
||||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
|
||||
@@ -14,6 +14,8 @@ set cpo-=C
|
||||
|
||||
setlocal commentstring=<!--%s-->
|
||||
|
||||
setlocal omnifunc=htmlcomplete#CompleteTags
|
||||
|
||||
" HTML: thanks to Johannes Zellner and Benji Fisher.
|
||||
if exists("loaded_matchit")
|
||||
let b:match_ignorecase = 1
|
||||
|
||||
13
runtime/ftplugin/javascript.vim
Normal file
13
runtime/ftplugin/javascript.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Javascript
|
||||
" Maintainer: Bram Moolenaar (for now)
|
||||
" Last Change: 2006 Jan 30
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if exists('&ofu')
|
||||
setlocal ofu=javascriptcomplete#CompleteJS
|
||||
endif
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: jsp
|
||||
" Maintainer: Dan Sharp <dwsharp at hotmail dot com>
|
||||
" Last Changed: 2004 Jul 08
|
||||
" Last Changed: 2005 Oct 10
|
||||
" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
@@ -46,7 +46,7 @@ if exists ("b:browsefilter")
|
||||
let s:browsefilter = b:browsefilter . s:browsefilter
|
||||
endif
|
||||
if exists("b:match_words")
|
||||
let s:match_words = b:match_words . ',' . s:matchwords
|
||||
let s:match_words = b:match_words . ',' . s:match_words
|
||||
endif
|
||||
|
||||
" Load the combined list of match_words for matchit.vim
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim settings file
|
||||
" Language: LambdaProlog (Teyjus)
|
||||
" Maintainer: Markus Mottl <markus@oefai.at>
|
||||
" URL: http://www.oefai.at/~markus/vim/ftplugin/lprolog.vim
|
||||
" Last Change: 2001 Oct 02 - fixed uncommenting bug (MM)
|
||||
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
|
||||
" URL: http://www.ocaml.info/vim/ftplugin/lprolog.vim
|
||||
" Last Change: 2006 Feb 05
|
||||
" 2001 Sep 16 - fixed 'no_mail_maps'-bug (MM)
|
||||
" 2001 Sep 02 - initial release (MM)
|
||||
|
||||
|
||||
30
runtime/ftplugin/matlab.vim
Normal file
30
runtime/ftplugin/matlab.vim
Normal file
@@ -0,0 +1,30 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: matlab
|
||||
" Maintainer: Jake Wasserman <jwasserman at gmail dot com>
|
||||
" Last Changed: 2006 Jan 12
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
if exists("loaded_matchit")
|
||||
let s:conditionalEnd = '\(([^()]*\)\@!\<end\>\([^()]*)\)\@!'
|
||||
let b:match_words = '\<if\>\|\<while\>\|\<for\>\|\<switch\>:' .
|
||||
\ s:conditionalEnd . ',\<if\>:\<elseif\>:\<else\>:' .
|
||||
\ s:conditionalEnd
|
||||
endif
|
||||
|
||||
setlocal suffixesadd=.m
|
||||
setlocal suffixes+=.asv
|
||||
|
||||
let b:undo_ftplugin = "setlocal suffixesadd< suffixes< "
|
||||
\ . "| unlet! b:match_words"
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
|
||||
|
||||
|
||||
@@ -1,38 +1,36 @@
|
||||
" Vim settings file
|
||||
" Language: OCaml
|
||||
" Maintainers: Mike Leary <leary@nwlink.com>
|
||||
" Markus Mottl <markus@oefai.at>
|
||||
" Stefano Zacchiroli <zack@bononia.it>
|
||||
" URL: http://www.oefai.at/~markus/vim/ftplugin/ocaml.vim
|
||||
" Last Change: 2004 Apr 12 - better .ml/.mli-switching without Python (SZ)
|
||||
" 2003 Nov 21 - match_words-patterns and .ml/.mli-switching (MM)
|
||||
" 2003 Oct 16 - re-entered variable 'did_ocaml_dtypes' (MM)
|
||||
" 2003 Oct 15 - added Stefano Zacchirolis (SZ) Python-code for
|
||||
" displaying type annotations (MM)
|
||||
|
||||
" Only do these settings when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Don't do other file type settings for this buffer
|
||||
let b:did_ftplugin = 1
|
||||
" Language: OCaml
|
||||
" Maintainer: David Baelde <firstname.name@ens-lyon.org>
|
||||
" Mike Leary <leary@nwlink.com>
|
||||
" Markus Mottl <markus.mottl@gmail.com>
|
||||
" Stefano Zacchiroli <zack@bononia.it>
|
||||
" URL: http://www.ocaml.info/vim/ftplugin/ocaml.vim
|
||||
" Last Change: 2006 Feb 05
|
||||
"
|
||||
" if exists("b:did_ftplugin")
|
||||
" finish
|
||||
" endif
|
||||
let b:did_ftplugin=1
|
||||
|
||||
" Error handling -- helps moving where the compiler wants you to go
|
||||
let s:cposet=&cpoptions
|
||||
set cpo-=C
|
||||
|
||||
" Error formats
|
||||
setlocal efm=
|
||||
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
|
||||
\%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
|
||||
\%+EReference\ to\ unbound\ regexp\ name\ %m,
|
||||
\%Eocamlyacc:\ e\ -\ line\ %l\ of\ \"%f\"\\,\ %m,
|
||||
\%Wocamlyacc:\ w\ -\ %m,
|
||||
\%-Zmake%.%#,
|
||||
\%C%m
|
||||
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
|
||||
\%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
|
||||
\%+EReference\ to\ unbound\ regexp\ name\ %m,
|
||||
\%Eocamlyacc:\ e\ -\ line\ %l\ of\ \"%f\"\\,\ %m,
|
||||
\%Wocamlyacc:\ w\ -\ %m,
|
||||
\%-Zmake%.%#,
|
||||
\%C%m,
|
||||
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
|
||||
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
|
||||
\%D%*\\a:\ Entering\ directory\ `%f',
|
||||
\%X%*\\a:\ Leaving\ directory\ `%f',
|
||||
\%DMaking\ %*\\a\ in\ %f
|
||||
|
||||
" Add mappings, unless the user didn't want this.
|
||||
if !exists("no_plugin_maps") && !exists("no_ocaml_maps")
|
||||
" Uncommenting
|
||||
" (un)commenting
|
||||
if !hasmapto('<Plug>Comment')
|
||||
nmap <buffer> <LocalLeader>c <Plug>LUncomOn
|
||||
vmap <buffer> <LocalLeader>c <Plug>BUncomOn
|
||||
@@ -41,46 +39,141 @@ if !exists("no_plugin_maps") && !exists("no_ocaml_maps")
|
||||
endif
|
||||
|
||||
nnoremap <buffer> <Plug>LUncomOn mz0i(* <ESC>$A *)<ESC>`z
|
||||
nnoremap <buffer> <Plug>LUncomOff <ESC>:s/^(\* \(.*\) \*)/\1/<CR>
|
||||
nnoremap <buffer> <Plug>LUncomOff :s/^(\* \(.*\) \*)/\1/<CR>:noh<CR>
|
||||
vnoremap <buffer> <Plug>BUncomOn <ESC>:'<,'><CR>`<O<ESC>0i(*<ESC>`>o<ESC>0i*)<ESC>`<
|
||||
vnoremap <buffer> <Plug>BUncomOff <ESC>:'<,'><CR>`<dd`>dd`<
|
||||
|
||||
if !hasmapto('<Plug>Abbrev')
|
||||
iabbrev <buffer> ASS (assert false)
|
||||
iabbrev <buffer> ASS (assert false (* XXX *))
|
||||
endif
|
||||
endif
|
||||
|
||||
" Let % jump between structure elements (due to Issac Trotts)
|
||||
let b:mw='\<let\>:\<and\>:\(\<in\>\|;;\),'
|
||||
let b:mw=b:mw . '\<if\>:\<then\>:\<else\>,\<do\>:\<done\>,'
|
||||
let b:mw=b:mw . '\<\(object\|sig\|struct\|begin\)\>:\<end\>'
|
||||
let b:match_words=b:mw
|
||||
let b:mw = ''
|
||||
let b:mw = b:mw . ',\<let\>:\<and\>:\(\<in\>\|;;\)'
|
||||
let b:mw = b:mw . ',\<if\>:\<then\>:\<else\>'
|
||||
let b:mw = b:mw . ',\<\(for\|while\)\>:\<do\>:\<done\>,'
|
||||
let b:mw = b:mw . ',\<\(object\|sig\|struct\|begin\)\>:\<end\>'
|
||||
let b:mw = b:mw . ',\<\(match\|try\)\>:\<with\>'
|
||||
let b:match_words = b:mw
|
||||
|
||||
let b:match_ignorecase=0
|
||||
|
||||
" switching between interfaces (.mli) and implementations (.ml)
|
||||
if !exists("g:did_ocaml_switch")
|
||||
let g:did_ocaml_switch = 1
|
||||
map ,s :call OCaml_switch(0)<CR>
|
||||
map ,S :call OCaml_switch(1)<CR>
|
||||
map <LocalLeader>s :call OCaml_switch(0)<CR>
|
||||
map <LocalLeader>S :call OCaml_switch(1)<CR>
|
||||
fun OCaml_switch(newwin)
|
||||
if (match(bufname(""), "\\.mli$") >= 0)
|
||||
let fname = substitute(bufname(""), "\\.mli$", ".ml", "")
|
||||
if (a:newwin == 1)
|
||||
exec "new " . fname
|
||||
exec "new " . fname
|
||||
else
|
||||
exec "arge " . fname
|
||||
exec "arge " . fname
|
||||
endif
|
||||
elseif (match(bufname(""), "\\.ml$") >= 0)
|
||||
let fname = bufname("") . "i"
|
||||
if (a:newwin == 1)
|
||||
exec "new " . fname
|
||||
exec "new " . fname
|
||||
else
|
||||
exec "arge " . fname
|
||||
exec "arge " . fname
|
||||
endif
|
||||
endif
|
||||
endfun
|
||||
endif
|
||||
|
||||
" Vim support for OCaml 3.07 .annot files (requires Vim with python support)
|
||||
" Folding support
|
||||
|
||||
" Get the modeline because folding depends on indentation
|
||||
let s:s = line2byte(line('.'))+col('.')-1
|
||||
if search('^\s*(\*:o\?caml:')
|
||||
let s:modeline = getline(".")
|
||||
else
|
||||
let s:modeline = ""
|
||||
endif
|
||||
if s:s > 0
|
||||
exe 'goto' s:s
|
||||
endif
|
||||
|
||||
" Get the indentation params
|
||||
let s:m = matchstr(s:modeline,'default\s*=\s*\d\+')
|
||||
if s:m != ""
|
||||
let s:idef = matchstr(s:m,'\d\+')
|
||||
elseif exists("g:omlet_indent")
|
||||
let s:idef = g:omlet_indent
|
||||
else
|
||||
let s:idef = 2
|
||||
endif
|
||||
let s:m = matchstr(s:modeline,'struct\s*=\s*\d\+')
|
||||
if s:m != ""
|
||||
let s:i = matchstr(s:m,'\d\+')
|
||||
elseif exists("g:omlet_indent_struct")
|
||||
let s:i = g:omlet_indent_struct
|
||||
else
|
||||
let s:i = s:idef
|
||||
endif
|
||||
|
||||
" Set the folding method
|
||||
if exists("g:ocaml_folding")
|
||||
setlocal foldmethod=expr
|
||||
setlocal foldexpr=OMLetFoldLevel(v:lnum)
|
||||
endif
|
||||
|
||||
" - Only definitions below, executed once -------------------------------------
|
||||
|
||||
if exists("*OMLetFoldLevel")
|
||||
finish
|
||||
endif
|
||||
|
||||
function s:topindent(lnum)
|
||||
let l = a:lnum
|
||||
while l > 0
|
||||
if getline(l) =~ '\s*\%(\<struct\>\|\<sig\>\|\<object\>\)'
|
||||
return indent(l)
|
||||
endif
|
||||
let l = l-1
|
||||
endwhile
|
||||
return -s:i
|
||||
endfunction
|
||||
|
||||
function OMLetFoldLevel(l)
|
||||
|
||||
" This is for not merging blank lines around folds to them
|
||||
if getline(a:l) !~ '\S'
|
||||
return -1
|
||||
endif
|
||||
|
||||
" We start folds for modules, classes, and every toplevel definition
|
||||
if getline(a:l) =~ '^\s*\%(\<val\>\|\<module\>\|\<class\>\|\<type\>\|\<method\>\|\<initializer\>\|\<inherit\>\|\<exception\>\|\<external\>\)'
|
||||
exe 'return ">' (indent(a:l)/s:i)+1 '"'
|
||||
endif
|
||||
|
||||
" Toplevel let are detected thanks to the indentation
|
||||
if getline(a:l) =~ '^\s*let\>' && indent(a:l) == s:i+s:topindent(a:l)
|
||||
exe 'return ">' (indent(a:l)/s:i)+1 '"'
|
||||
endif
|
||||
|
||||
" We close fold on end which are associated to struct, sig or object.
|
||||
" We use syntax information to do that.
|
||||
if getline(a:l) =~ '^\s*end\>' && synIDattr(synID(a:l, indent(a:l)+1, 0), "name") != "ocamlKeyword"
|
||||
return (indent(a:l)/s:i)+1
|
||||
endif
|
||||
|
||||
" Folds end on ;;
|
||||
if getline(a:l) =~ '^\s*;;'
|
||||
exe 'return "<' (indent(a:l)/s:i)+1 '"'
|
||||
endif
|
||||
|
||||
" Comments around folds aren't merged to them.
|
||||
if synIDattr(synID(a:l, indent(a:l)+1, 0), "name") == "ocamlComment"
|
||||
return -1
|
||||
endif
|
||||
|
||||
return '='
|
||||
endfunction
|
||||
|
||||
" Vim support for OCaml .annot files (requires Vim with python support)
|
||||
"
|
||||
" Executing OCamlPrintType(<mode>) function will display in the Vim bottom
|
||||
" line(s) the type of an ocaml value getting it from the corresponding .annot
|
||||
@@ -92,37 +185,15 @@ endif
|
||||
" .annot files are parsed lazily the first time OCamlPrintType is invoked; is
|
||||
" also possible to force the parsing using the OCamlParseAnnot() function.
|
||||
"
|
||||
" Hitting the <F3> key will cause OCamlPrintType function to be invoked with
|
||||
" Typing ',3' will cause OCamlPrintType function to be invoked with
|
||||
" the right argument depending on the current mode (visual or not).
|
||||
"
|
||||
" Copyright (C) <2003> Stefano Zacchiroli <zack@bononia.it>
|
||||
" Copyright (C) <2003-2004> Stefano Zacchiroli <zack@bononia.it>
|
||||
"
|
||||
" Created: Wed, 01 Oct 2003 18:16:22 +0200 zack
|
||||
" LastModified: Mon, 06 Oct 2003 11:05:39 +0200 zack
|
||||
"
|
||||
" This program is free software; you can redistribute it and/or modify
|
||||
" it under the terms of the GNU General Public License as published by
|
||||
" the Free Software Foundation; either version 2 of the License, or
|
||||
" (at your option) any later version.
|
||||
"
|
||||
" This program is distributed in the hope that it will be useful,
|
||||
" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
" GNU General Public License for more details.
|
||||
"
|
||||
" You should have received a copy of the GNU General Public License
|
||||
" along with this program; if not, write to the Free Software
|
||||
" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"
|
||||
" LastModified: Wed, 25 Aug 2004 18:28:39 +0200 zack
|
||||
|
||||
if !has("python")
|
||||
echo "Python support not found: OCaml .annot support disabled"
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists("g:did_ocaml_dtypes")
|
||||
let g:did_ocaml_dtypes = 1
|
||||
else
|
||||
finish
|
||||
endif
|
||||
|
||||
@@ -166,7 +237,7 @@ class Annotations:
|
||||
at least two space characters.
|
||||
|
||||
- in each block, the two positions are respectively the start and the
|
||||
- end of the range described by the block.
|
||||
end of the range described by the block.
|
||||
- in a position, the filename is the name of the file, the first num
|
||||
is the line number, the second num is the offset of the beginning
|
||||
of the line, the third num is the offset of the position itself.
|
||||
@@ -182,7 +253,7 @@ class Annotations:
|
||||
self.__timestamp = None # last parse action timestamp
|
||||
self.__annot = {}
|
||||
self.__re = re.compile(
|
||||
'^"[^"]+"\s+(\d+)\s+(\d+)\s+(\d+)\s+"[^"]+"\s+(\d+)\s+(\d+)\s+(\d+)$')
|
||||
'^"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)\s+"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)$')
|
||||
|
||||
def __parse(self, fname):
|
||||
try:
|
||||
@@ -210,7 +281,9 @@ class Annotations:
|
||||
lineno += 1
|
||||
if (line == ""): raise malformed_annotations(lineno)
|
||||
type = string.join(type, "\n")
|
||||
self.__annot[(line1, col1), (line2, col2)] = type
|
||||
key = ((line1, col1), (line2, col2))
|
||||
if not self.__annot.has_key(key):
|
||||
self.__annot[key] = type
|
||||
line = f.readline() # position line
|
||||
f.close()
|
||||
self.__filename = fname
|
||||
@@ -285,7 +358,7 @@ def parseOCamlAnnot():
|
||||
|
||||
EOF
|
||||
|
||||
fun OCamlPrintType(current_mode)
|
||||
fun! OCamlPrintType(current_mode)
|
||||
if (a:current_mode == "visual")
|
||||
python printOCamlType("visual")
|
||||
else
|
||||
@@ -293,9 +366,14 @@ fun OCamlPrintType(current_mode)
|
||||
endif
|
||||
endfun
|
||||
|
||||
fun OCamlParseAnnot()
|
||||
fun! OCamlParseAnnot()
|
||||
python parseOCamlAnnot()
|
||||
endfun
|
||||
|
||||
map <F3> :call OCamlPrintType("normal")<RETURN>
|
||||
vmap <F3> :call OCamlPrintType("visual")<RETURN>
|
||||
map <LocalLeader>t :call OCamlPrintType("normal")<RETURN>
|
||||
vmap <LocalLeader>t :call OCamlPrintType("visual")<RETURN>
|
||||
|
||||
let &cpoptions=s:cposet
|
||||
unlet s:cposet
|
||||
|
||||
" vim:sw=2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Perl
|
||||
" Maintainer: Dan Sharp <dwsharp at hotmail dot com>
|
||||
" Last Change: 2004 Dec 06
|
||||
" Last Change: 2005 Dec 16
|
||||
" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
@@ -27,7 +27,7 @@ endif
|
||||
|
||||
" Provided by Ned Konz <ned at bike-nomad dot com>
|
||||
"---------------------------------------------
|
||||
setlocal include=\\<\\(use\\|require\\)\\>
|
||||
setlocal include=\\<\\(use\\\|require\\)\\>
|
||||
setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','')
|
||||
setlocal define=[^A-Za-z_]
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user