mirror of
https://github.com/zoriya/vim.git
synced 2025-12-30 19:08:26 +00:00
Compare commits
140 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
7bb4c6e3f6 | ||
|
|
caa0fcfa6b | ||
|
|
4615234489 | ||
|
|
ffb8ab0402 | ||
|
|
d1231f991a | ||
|
|
cafda4f893 | ||
|
|
4440382f3c | ||
|
|
dd2436f352 | ||
|
|
92d640fad1 | ||
|
|
8b96d64cb5 | ||
|
|
e344bead3e | ||
|
|
da2303d96b | ||
|
|
ac6e65f88d | ||
|
|
81f1ecbc4d | ||
|
|
955295684b | ||
|
|
6e7c7f3a19 | ||
|
|
5bcb2eba3d | ||
|
|
6de6853ce3 | ||
|
|
a2036d2b48 | ||
|
|
6f16eb817b | ||
|
|
7862282f2e | ||
|
|
a6c840d7d4 | ||
|
|
e52325c254 | ||
|
|
d52d9741ee | ||
|
|
90915b5d48 | ||
|
|
50c8195012 | ||
|
|
cee5560a4b | ||
|
|
d12a132603 | ||
|
|
8aff23a13e | ||
|
|
5195e45609 | ||
|
|
5b8d8fdb52 | ||
|
|
ae5bce1c12 | ||
|
|
90cfdbe040 | ||
|
|
e5b8e3d3c6 | ||
|
|
8c45cdf4cf | ||
|
|
488c6512d9 | ||
|
|
8b1e71fa25 | ||
|
|
8b59de9f2f | ||
|
|
0fa313a718 | ||
|
|
c388fbf9d9 | ||
|
|
670f9312cc | ||
|
|
aba2f487ff | ||
|
|
4f574c8ab1 | ||
|
|
329cc7e429 | ||
|
|
8af244281c | ||
|
|
f57907ec2c | ||
|
|
f6cf987574 | ||
|
|
648120b750 |
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,8 +72,6 @@ SRC_ALL1 = \
|
||||
src/vim.h \
|
||||
src/window.c \
|
||||
src/xxd/xxd.c \
|
||||
|
||||
SRC_ALL2 = \
|
||||
src/main.aap \
|
||||
src/testdir/main.aap \
|
||||
src/testdir/*.in \
|
||||
@@ -111,6 +110,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 +136,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 +152,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 +177,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 +209,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 +355,15 @@ 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)
|
||||
SRC_VMS = \
|
||||
@@ -426,7 +413,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 \
|
||||
@@ -458,6 +444,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 \
|
||||
@@ -532,10 +519,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 \
|
||||
@@ -684,11 +667,15 @@ 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 \
|
||||
runtime/spell/??/main.aap \
|
||||
runtime/spell/yi/README.txt \
|
||||
runtime/spell/main.aap \
|
||||
runtime/spell/*.vim \
|
||||
runtime/spell/fixdup \
|
||||
|
||||
# generic language files, binary
|
||||
LANG_GEN_BIN = \
|
||||
|
||||
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
|
||||
|
||||
|
||||
257
runtime/autoload/ccomplete.vim
Normal file
257
runtime/autoload/ccomplete.vim
Normal file
@@ -0,0 +1,257 @@
|
||||
" Vim completion script
|
||||
" Language: C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Oct 06
|
||||
|
||||
|
||||
" This function is used for the 'omnifunc' option.
|
||||
function! ccomplete#Complete(findstart, base)
|
||||
if a:findstart
|
||||
" 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'
|
||||
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
|
||||
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
|
||||
|
||||
" Return list of matches.
|
||||
|
||||
let base = s:prepended . a:base
|
||||
|
||||
" Split item in words, keep empty word after "." or "->".
|
||||
" "aa" -> ['aa'], "aa." -> ['aa', ''], "aa.bb" -> ['aa', 'bb'], etc.
|
||||
let items = split(base, '\.\|->', 1)
|
||||
if len(items) <= 1
|
||||
" Don't do anything for an empty base, would result in all the tags in the
|
||||
" tags file.
|
||||
if base == ''
|
||||
return []
|
||||
endif
|
||||
|
||||
" Only one part, no "." or "->": complete from tags file.
|
||||
" When local completion is wanted CTRL-N would have been used.
|
||||
return map(taglist('^' . base), 'v:val["name"]')
|
||||
endif
|
||||
|
||||
" 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 = s:Nextitem(strpart(line, 0, col), items[1:])
|
||||
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))
|
||||
" 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 col = match(line, items[0])
|
||||
call extend(res, s:Nextitem(strpart(line, 2, col - 2), items[1:]))
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
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:])
|
||||
endif
|
||||
|
||||
" If the one and only match was what's already there and it is a composite
|
||||
" type, add a "." or "->".
|
||||
if len(res) == 1 && res[0]['match'] == items[-1] && len(s:SearchMembers(res, [''])) > 0
|
||||
" If there is a '*' before the name use "->".
|
||||
if match(res[0]['tagline'], '\*\s*' . res[0]['match']) > 0
|
||||
let res[0]['match'] .= '->'
|
||||
else
|
||||
let res[0]['match'] .= '.'
|
||||
endif
|
||||
endif
|
||||
|
||||
return map(res, 'v:val["match"]')
|
||||
endfunc
|
||||
|
||||
" Find composing type in "lead" and match items[0] with it.
|
||||
" Repeat this recursively for items[1], if it's there.
|
||||
" Return the list of matches.
|
||||
function! s:Nextitem(lead, items)
|
||||
|
||||
" 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 res = []
|
||||
for tidx in range(len(tokens))
|
||||
|
||||
" 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
|
||||
|
||||
" TODO: add more reserved words
|
||||
if index(['int', 'float', '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 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
|
||||
|
||||
" Only handle typedefs here.
|
||||
if diclist[tagidx]['kind'] != 't'
|
||||
continue
|
||||
endif
|
||||
|
||||
" 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
|
||||
else
|
||||
" Could be "typedef other_T some_T".
|
||||
call extend(res, s:Nextitem(cmdtokens[0], a:items))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
if len(res) > 0
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res
|
||||
endfunction
|
||||
|
||||
|
||||
" 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
|
||||
" No further items, return the result.
|
||||
if len(a:items) == 1
|
||||
return matches
|
||||
endif
|
||||
|
||||
" More items following. For each of the possible members find the
|
||||
" matching following members.
|
||||
return s:SearchMembers(matches, a:items[1:])
|
||||
endif
|
||||
|
||||
" Failed to find anything.
|
||||
return []
|
||||
endfunction
|
||||
|
||||
" For matching members, find matches for following items.
|
||||
function! s:SearchMembers(matches, items)
|
||||
let res = []
|
||||
for i in range(len(a:matches))
|
||||
let line = a:matches[i]['tagline']
|
||||
let e = matchend(line, '\ttypename:')
|
||||
if e > 0
|
||||
" Use typename field
|
||||
let name = matchstr(line, '[^\t]*', e)
|
||||
call extend(res, s:StructMembers(name, 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))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
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
|
||||
477
runtime/autoload/htmlcomplete.vim
Normal file
477
runtime/autoload/htmlcomplete.vim
Normal file
@@ -0,0 +1,477 @@
|
||||
" Vim completion script
|
||||
" Language: XHTML 1.0 Strict
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2005 Now 20
|
||||
|
||||
function! htmlcomplete#CompleteTags(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
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 stylestart = searchpair('<style\>', '', '<\/style\>', "bnW")
|
||||
let styleend = searchpair('<style\>', '', '<\/style\>', "nW")
|
||||
if stylestart != 0 && styleend != 0
|
||||
let curpos = line('.')
|
||||
if stylestart <= curpos && styleend >= curpos
|
||||
let start = col('.') - 1
|
||||
let b:csscompl = 1
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
endif
|
||||
endif
|
||||
if !exists("b:csscompl")
|
||||
let b:compl_context = getline('.')[0:(compl_begin)]
|
||||
let b:compl_context = matchstr(b:compl_context, '.*<\zs.*')
|
||||
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
|
||||
unlet! b:compl_context
|
||||
" Check if we should do CSS completion inside of <style> tag
|
||||
if exists("b:csscompl")
|
||||
unlet! b:csscompl
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
endif
|
||||
" Make 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']
|
||||
|
||||
for m in entities
|
||||
if m =~ '^'.a:base
|
||||
call add(res, m.';')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res
|
||||
|
||||
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)
|
||||
else
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
|
||||
" Set attribute groups
|
||||
let coreattrs = ["id", "class", "style", "title"]
|
||||
let i18n = ["lang", "xml:lang", "dir=\"ltr\" ", "dir=\"rtl\" "]
|
||||
let events = ["onclick", "ondblclick", "onmousedown", "onmouseup", "onmousemove",
|
||||
\ "onmouseover", "onmouseout", "onkeypress", "onkeydown", "onkeyup"]
|
||||
let focus = ["accesskey", "tabindex", "onfocus", "onblur"]
|
||||
let coregroup = coreattrs + i18n + events
|
||||
" find tags matching with "context"
|
||||
" 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 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 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*[\"']"
|
||||
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
|
||||
let stripbase = matchstr(context, ".*\\(on[a-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
|
||||
" 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
|
||||
" Shorten context to not include last word
|
||||
let sbase = matchstr(context, '.*\ze\s.*')
|
||||
if tag =~ '^\(abbr\|acronym\|address\|b\|bdo\|big\|caption\|cite\|code\|dd\|dfn\|div\|dl\|dt\|em\|fieldset\|h\d\|hr\|i\|kbd\|li\|noscript\|ol\|p\|samp\|small\|span\|strong\|sub\|sup\|tt\|ul\|var\)$'
|
||||
let attrs = coregroup
|
||||
elseif tag == 'a'
|
||||
let attrs = coregroup + focus + ["charset", "type", "name", "href", "hreflang", "rel", "rev", "shape", "coords"]
|
||||
elseif tag == 'area'
|
||||
let attrs = coregroup + focus + ["shape", "coords", "href", "nohref", "alt"]
|
||||
elseif tag == 'base'
|
||||
let attrs = ["href", "id"]
|
||||
elseif tag == 'blockquote'
|
||||
let attrs = coregroup + ["cite"]
|
||||
elseif tag == 'body'
|
||||
let attrs = coregroup + ["onload", "onunload"]
|
||||
elseif tag == 'br'
|
||||
let attrs = coreattrs
|
||||
elseif tag == 'button'
|
||||
let attrs = coregroup + focus + ["name", "value", "type"]
|
||||
elseif tag == '^\(col\|colgroup\)$'
|
||||
let attrs = coregroup + ["span", "width", "align", "char", "charoff", "valign"]
|
||||
elseif tag =~ '^\(del\|ins\)$'
|
||||
let attrs = coregroup + ["cite", "datetime"]
|
||||
elseif tag == 'form'
|
||||
let attrs = coregroup + ["action", "method=\"get\" ", "method=\"post\" ", "enctype", "onsubmit", "onreset", "accept", "accept-charset"]
|
||||
elseif tag == 'head'
|
||||
let attrs = i18n + ["id", "profile"]
|
||||
elseif tag == 'html'
|
||||
let attrs = i18n + ["id", "xmlns"]
|
||||
elseif tag == 'img'
|
||||
let attrs = coregroup + ["src", "alt", "longdesc", "height", "width", "usemap", "ismap"]
|
||||
elseif tag == 'input'
|
||||
let attrs = coregroup + ["type", "name", "value", "checked", "disabled", "readonly", "size", "maxlength", "src", "alt", "usemap", "onselect", "onchange", "accept"]
|
||||
elseif tag == 'label'
|
||||
let attrs = coregroup + ["for", "accesskey", "onfocus", "onblur"]
|
||||
elseif tag == 'legend'
|
||||
let attrs = coregroup + ["accesskey"]
|
||||
elseif tag == 'link'
|
||||
let attrs = coregroup + ["charset", "href", "hreflang", "type", "rel", "rev", "media"]
|
||||
elseif tag == 'map'
|
||||
let attrs = i18n + events + ["id", "class", "style", "title", "name"]
|
||||
elseif tag == 'meta'
|
||||
let attrs = i18n + ["id", "http-equiv", "content", "scheme", "name"]
|
||||
elseif tag == 'title'
|
||||
let attrs = i18n + ["id"]
|
||||
elseif tag == 'object'
|
||||
let attrs = coregroup + ["declare", "classid", "codebase", "data", "type", "codetype", "archive", "standby", "height", "width", "usemap", "name", "tabindex"]
|
||||
elseif tag == 'optgroup'
|
||||
let attrs = coregroup + ["disbled", "label"]
|
||||
elseif tag == 'option'
|
||||
let attrs = coregroup + ["disbled", "selected", "value", "label"]
|
||||
elseif tag == 'param'
|
||||
let attrs = ["id", "name", "value", "valuetype", "type"]
|
||||
elseif tag == 'pre'
|
||||
let attrs = coregroup + ["xml:space"]
|
||||
elseif tag == 'q'
|
||||
let attrs = coregroup + ["cite"]
|
||||
elseif tag == 'script'
|
||||
let attrs = ["id", "charset", "type=\"text/javascript\"", "type", "src", "defer", "xml:space"]
|
||||
elseif tag == 'select'
|
||||
let attrs = coregroup + ["name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange"]
|
||||
elseif tag == 'style'
|
||||
let attrs = coreattrs + ["id", "type=\"text/css\"", "type", "media", "title", "xml:space"]
|
||||
elseif tag == 'table'
|
||||
let attrs = coregroup + ["summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding"]
|
||||
elseif tag =~ '^\(thead\|tfoot\|tbody\|tr\)$'
|
||||
let attrs = coregroup + ["align", "char", "charoff", "valign"]
|
||||
elseif tag == 'textarea'
|
||||
let attrs = coregroup + ["name", "rows", "cols", "disabled", "readonly", "onselect", "onchange"]
|
||||
elseif tag =~ '^\(th\|td\)$'
|
||||
let attrs = coregroup + ["abbr", "headers", "scope", "rowspan", "colspan", "align", "char", "charoff", "valign"]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
|
||||
for m in sort(attrs)
|
||||
if m =~ '^'.attr
|
||||
if m =~ '^\(ismap\|defer\|declare\|nohref\|checked\|disabled\|selected\|readonly\)$' || m =~ '='
|
||||
call add(res, m)
|
||||
else
|
||||
call add(res, m.'="')
|
||||
endif
|
||||
elseif m =~ attr
|
||||
if m =~ '^\(ismap\|defer\|declare\|nohref\|checked\|disabled\|selected\|readonly\)$' || m =~ '='
|
||||
call add(res2, m)
|
||||
else
|
||||
call add(res2, m.'="')
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
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
|
||||
" Deal with tag completion.
|
||||
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
|
||||
if !exists("g:xmldata_xhtml10s")
|
||||
runtime! autoload/xml/xhtml10s.vim
|
||||
endif
|
||||
|
||||
let tags = g:xmldata_xhtml10s[opentag][0]
|
||||
|
||||
for m in sort(tags)
|
||||
if m =~ '^'.context
|
||||
call add(res, m)
|
||||
elseif m =~ context
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
endfunction
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,23 +1,43 @@
|
||||
" 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: Apr 07, 2005
|
||||
" Version: 4a NOT RELEASED
|
||||
" 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
|
||||
" 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.
|
||||
"
|
||||
" Rom 6:23 (WEB) For the wages of sin is death, but the free gift of God {{{1
|
||||
" is eternal life in Christ Jesus our Lord.
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" 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= "v4a"
|
||||
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://','')
|
||||
|
||||
@@ -28,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://','')
|
||||
|
||||
@@ -51,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
|
||||
@@ -70,171 +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_sxw: visualize sxw files {{{1
|
||||
fun! NetrwFileHandler_sxw(sxw)
|
||||
" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
|
||||
if executable("gs")
|
||||
exe 'silent! !gs "'.a:sxw.'"'
|
||||
else
|
||||
" " call Dret("NetrwFileHandler_sxw 0")
|
||||
return 0
|
||||
endif
|
||||
|
||||
" " call Dret("NetrwFileHandler_sxw 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!
|
||||
@@ -248,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!
|
||||
@@ -273,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
|
||||
|
||||
161
runtime/autoload/netrwSettings.vim
Normal file
161
runtime/autoload/netrwSettings.vim
Normal file
@@ -0,0 +1,161 @@
|
||||
" netrwSettings.vim: makes netrw settings simpler
|
||||
" Date: Oct 12, 2005
|
||||
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
|
||||
" Version: 4
|
||||
" 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
|
||||
" 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.
|
||||
"
|
||||
" Mat 4:23 (WEB) Jesus went about in all Galilee, teaching in their {{{1
|
||||
" 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
|
||||
finish
|
||||
endif
|
||||
let g:loaded_netrwSettings = "v4"
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwSettings: {{{1
|
||||
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
|
||||
setlocal noswapfile bh=wipe
|
||||
set ft=vim
|
||||
file Netrw\ Settings
|
||||
|
||||
" these variables have the following default effects when they don't
|
||||
" exist (ie. have not been set by the user in his/her .vimrc)
|
||||
if !exists("g:netrw_longlist")
|
||||
let g:netrw_longlist= 0
|
||||
let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
|
||||
endif
|
||||
if !exists("g:netrw_silent")
|
||||
let g:netrw_silent= 0
|
||||
endif
|
||||
if !exists("g:netrw_use_nt_rcp")
|
||||
let g:netrw_use_nt_rcp= 0
|
||||
endif
|
||||
if !exists("g:netrw_ftp")
|
||||
let g:netrw_ftp= 0
|
||||
endif
|
||||
if !exists("g:netrw_ignorenetrc")
|
||||
let g:netrw_ignorenetrc= 0
|
||||
endif
|
||||
|
||||
put ='+ ---------------------------------------------'
|
||||
put ='+ NetrwSettings: (by Charles E. Campbell, Jr.)'
|
||||
put ='+ Press ? with cursor atop any line for help '
|
||||
put ='+ ---------------------------------------------'
|
||||
let s:netrw_settings_stop= line(".")
|
||||
|
||||
put =''
|
||||
put ='+ Netrw Protocol Commands'
|
||||
put = 'let g:netrw_dav_cmd = '.g:netrw_dav_cmd
|
||||
put = 'let g:netrw_fetch_cmd = '.g:netrw_fetch_cmd
|
||||
put = 'let g:netrw_ftp_cmd = '.g:netrw_ftp_cmd
|
||||
put = 'let g:netrw_http_cmd = '.g:netrw_http_cmd
|
||||
put = 'let g:netrw_rcp_cmd = '.g:netrw_rcp_cmd
|
||||
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 = ''
|
||||
|
||||
put ='+Netrw Transfer Control'
|
||||
put = 'let g:netrw_cygwin = '.g:netrw_cygwin
|
||||
put = 'let g:netrw_ftp = '.g:netrw_ftp
|
||||
put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode
|
||||
put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc
|
||||
put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp
|
||||
put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp
|
||||
let s:netrw_xfer_stop= line(".")
|
||||
|
||||
put = ''
|
||||
put ='+ Netrw Browser Control'
|
||||
put = 'let g:netrw_alto = '.g:netrw_alto
|
||||
put = 'let g:netrw_altv = '.g:netrw_altv
|
||||
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_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
|
||||
put = 'let g:netrw_longlist = '.g:netrw_longlist
|
||||
put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen
|
||||
put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd
|
||||
put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd
|
||||
put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd
|
||||
put = 'let g:netrw_rmdir_cmd = '.g:netrw_rmdir_cmd
|
||||
put = 'let g:netrw_rmf_cmd = '.g:netrw_rmf_cmd
|
||||
put = 'let g:netrw_silent = '.g:netrw_silent
|
||||
put = 'let g:netrw_sort_by = '.g:netrw_sort_by
|
||||
put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction
|
||||
put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence
|
||||
put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
|
||||
put = 'let g:netrw_timefmt = '.g:netrw_timefmt
|
||||
put = 'let g:netrw_winsize = '.g:netrw_winsize
|
||||
|
||||
put =''
|
||||
put ='+ For help, place cursor on line and press ?'
|
||||
|
||||
1d
|
||||
silent %s/^+/"/e
|
||||
res 99
|
||||
silent %s/= \([^0-9].*\)$/= '\1'/e
|
||||
silent %s/= $/= ''/e
|
||||
1
|
||||
|
||||
set nomod
|
||||
|
||||
map <buffer> <silent> ? :call NetrwSettingHelp()<cr>
|
||||
let tmpfile= tempname()
|
||||
exe 'au BufWriteCmd Netrw\ Settings silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetrwSettingHelp: {{{2
|
||||
fun! NetrwSettingHelp()
|
||||
" call Dfunc("NetrwSettingHelp()")
|
||||
let curline = getline(".")
|
||||
if curline =~ '='
|
||||
let varhelp = substitute(curline,'^\s*let ','','e')
|
||||
let varhelp = substitute(varhelp,'\s*=.*$','','e')
|
||||
" call Decho("trying help ".varhelp)
|
||||
try
|
||||
exe "he ".varhelp
|
||||
catch /^Vim\%((\a\+)\)\=:E149/
|
||||
echo "***sorry*** no help available for <".varhelp.">"
|
||||
endtry
|
||||
elseif line(".") < s:netrw_settings_stop
|
||||
he netrw-settings
|
||||
elseif line(".") < s:netrw_protocol_stop
|
||||
he netrw-externapp
|
||||
elseif line(".") < s:netrw_xfer_stop
|
||||
he netrw-variables
|
||||
else
|
||||
he netrw-browse-var
|
||||
endif
|
||||
" call Dret("NetrwSettingHelp")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Modelines: {{{1
|
||||
" vim:ts=8 fdm=marker
|
||||
@@ -1,130 +1,329 @@
|
||||
" vim:set ts=8 sts=4 sw=4:
|
||||
" tar.vim: Handles browsing tarfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Nov 28, 2005
|
||||
" Version: 5
|
||||
" 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= "v5"
|
||||
|
||||
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
|
||||
%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 a:fname =~# '\.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.">")
|
||||
|
||||
let dirpath = substitute(fname,'/[^/]\+$','','e')
|
||||
if tarfile !~ '/'
|
||||
let tarfile= curdir.'/'.tarfile
|
||||
endif
|
||||
" call Decho("tarfile<".tarfile."> fname<".fname.">")
|
||||
|
||||
call mkdir(dirpath,"p")
|
||||
exe "w! ".fname
|
||||
if executable("cygpath")
|
||||
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
|
||||
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
|
||||
endif
|
||||
|
||||
let l:cat = s:TarCatCommand(l:tarfile)
|
||||
execute "r !" . l:cat . " < '" . l:tarfile . "'"
|
||||
\ " | tar OPxf - '" . l:toextract . "'"
|
||||
" 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
|
||||
|
||||
if (a:cleanup)
|
||||
0d "blank line
|
||||
execute "doautocmd BufReadPost " . expand("%")
|
||||
setlocal readonly
|
||||
silent preserve
|
||||
endif
|
||||
endfunction
|
||||
let &report= repkeep
|
||||
" call Dret("tar#Write")
|
||||
endfun
|
||||
|
||||
function! tar#Browse(tarfile)
|
||||
setlocal noswapfile
|
||||
setlocal buftype=nofile
|
||||
setlocal bufhidden=hide
|
||||
setlocal filetype=
|
||||
setlocal nobuflisted
|
||||
setlocal buftype=nofile
|
||||
setlocal wrap
|
||||
setlocal syntax=tar
|
||||
" ---------------------------------------------------------------------
|
||||
" 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
|
||||
|
||||
let l:tarfile = a:tarfile
|
||||
let b:tarfile = l:tarfile
|
||||
let l:cat = s:TarCatCommand(l:tarfile)
|
||||
|
||||
if ! filereadable(l:tarfile)
|
||||
let l:tarfile = substitute(l:tarfile, '^tarfile:', '', '')
|
||||
endif
|
||||
|
||||
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
|
||||
|
||||
428
runtime/autoload/xmlcomplete.vim
Normal file
428
runtime/autoload/xmlcomplete.vim
Normal file
@@ -0,0 +1,428 @@
|
||||
" Vim completion script
|
||||
" Language: XHTML 1.0 Strict
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2005 Nov 22
|
||||
|
||||
" 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 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)]
|
||||
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, '^\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
|
||||
let context = b:compl_context
|
||||
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
|
||||
|
||||
for m in values
|
||||
if m =~ '^'.a:base
|
||||
call add(res, m.';')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res
|
||||
|
||||
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
|
||||
if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
|
||||
call add(res, m)
|
||||
elseif m =~ '='
|
||||
call add(res, m)
|
||||
else
|
||||
call add(res, m.'="')
|
||||
endif
|
||||
elseif m =~ attr
|
||||
if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
|
||||
call add(res, m)
|
||||
elseif m =~ '='
|
||||
call add(res, m)
|
||||
else
|
||||
call add(res2, m.'="')
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
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*:', '', '')
|
||||
|
||||
let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
|
||||
let context = substitute(context, '^\k*:', '', '')
|
||||
|
||||
if b:xml_namespace == 'DEFAULT'
|
||||
let b:xml_namespace = ''
|
||||
else
|
||||
let b:xml_namespace .= ':'
|
||||
endif
|
||||
|
||||
for m in tags
|
||||
if m =~ '^'.context
|
||||
call add(res, b:xml_namespace.m)
|
||||
elseif m =~ context
|
||||
call add(res2, b:xml_namespace.m)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
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'
|
||||
endfunction
|
||||
|
||||
function! s:InCommentAt(line, col)
|
||||
return synIDattr(synID(a:line, a:col, 0), 'name') =~ 'Comment'
|
||||
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
|
||||
266
runtime/autoload/zip.vim
Normal file
266
runtime/autoload/zip.vim
Normal file
@@ -0,0 +1,266 @@
|
||||
" zip.vim: Handles browsing zipfiles
|
||||
" AUTOLOAD PORTION
|
||||
" Date: Nov 28, 2005
|
||||
" Version: 5
|
||||
" 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= "v5"
|
||||
|
||||
" ----------------
|
||||
" 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','')
|
||||
let dirpath = substitute(fname,'/[^/]\+$','','e')
|
||||
if zipfile !~ '/'
|
||||
let zipfile= curdir.'/'.zipfile
|
||||
endif
|
||||
" call Decho("zipfile<".zipfile."> fname<".fname.">")
|
||||
|
||||
call mkdir(dirpath,"p")
|
||||
exe "w! ".fname
|
||||
if executable("cygpath")
|
||||
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
|
||||
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:
|
||||
@@ -19,6 +19,7 @@ DOCS = \
|
||||
change.txt \
|
||||
cmdline.txt \
|
||||
debugger.txt \
|
||||
debug.txt \
|
||||
develop.txt \
|
||||
diff.txt \
|
||||
digraph.txt \
|
||||
@@ -71,6 +72,8 @@ DOCS = \
|
||||
pi_gzip.txt \
|
||||
pi_netrw.txt \
|
||||
pi_spec.txt \
|
||||
pi_tar.txt \
|
||||
pi_zip.txt \
|
||||
print.txt \
|
||||
quickfix.txt \
|
||||
quickref.txt \
|
||||
@@ -139,6 +142,7 @@ HTMLS = \
|
||||
autocmd.html \
|
||||
change.html \
|
||||
cmdline.html \
|
||||
debug.html \
|
||||
debugger.html \
|
||||
develop.html \
|
||||
diff.html \
|
||||
|
||||
@@ -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: 2005 Dec 11
|
||||
|
||||
|
||||
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}
|
||||
@@ -155,21 +156,209 @@ argument behavior differs from that for defining and removing autocommands.
|
||||
In order to list buffer-local autocommands, use a pattern in the form <buffer>
|
||||
or <buffer=N>. See |autocmd-buflocal|.
|
||||
|
||||
*:autocmd-verbose*
|
||||
When 'verbose' is non-zero, listing an autocommand will also display where it
|
||||
was last defined. Example: >
|
||||
|
||||
:verbose autocmd BufEnter
|
||||
FileExplorer BufEnter
|
||||
* call s:LocalBrowse(expand("<amatch>"))
|
||||
Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim
|
||||
<
|
||||
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
|
||||
|
||||
|FocusGained| Vim got input focus
|
||||
|FocusLost| Vim lost input focus
|
||||
|CursorHold| the user doesn't press a key for a while
|
||||
|
||||
|WinEnter| after entering another window
|
||||
|WinLeave| before leaving a window
|
||||
|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.
|
||||
*BufReadCmd*
|
||||
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
|
||||
@@ -179,63 +368,49 @@ BufRead or BufReadPost When starting to edit a new buffer, after
|
||||
This does NOT work for ":r file". Not used
|
||||
when the file doesn't exist. Also used after
|
||||
successfully recovering a file.
|
||||
*BufReadCmd*
|
||||
*BufReadPre* *E200* *E201*
|
||||
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 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
|
||||
@@ -243,42 +418,68 @@ 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.
|
||||
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}
|
||||
*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.
|
||||
@@ -308,15 +509,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
|
||||
@@ -332,104 +582,136 @@ 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|,
|
||||
|: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.
|
||||
*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.
|
||||
*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|.
|
||||
*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.
|
||||
@@ -446,142 +728,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}*
|
||||
@@ -799,6 +945,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
|
||||
@@ -905,10 +1055,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
|
||||
@@ -1025,5 +1173,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 Jul 30
|
||||
*change.txt* For Vim version 7.0aa. Last change: 2005 Dec 16
|
||||
|
||||
|
||||
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
|
||||
@@ -1493,8 +1496,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.
|
||||
|
||||
@@ -1534,4 +1538,8 @@ The details about sorting depend on the library function used. There is no
|
||||
guarantee that sorting is "stable" or obeys the current locale. You will have
|
||||
to try it out.
|
||||
|
||||
The sorting itself cannot be interrupted, because of using a system library
|
||||
function. You can interrupt the preparation (for undo) and putting the sorted
|
||||
lines into the buffer. In the last case you may end up with duplicated lines.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -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: 2005 Nov 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -153,6 +153,7 @@ 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)
|
||||
See |registers| about registers. {not in Vi}
|
||||
Implementation detail: When using the |expression| register
|
||||
and invoking setcmdpos(), this sets the position before
|
||||
@@ -191,7 +192,8 @@ 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.
|
||||
@@ -203,7 +205,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|
|
||||
@@ -558,7 +562,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 +648,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:*
|
||||
|
||||
69
runtime/doc/debug.txt
Normal file
69
runtime/doc/debug.txt
Normal file
@@ -0,0 +1,69 @@
|
||||
*debug.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
|
||||
Debugging Vim *debug-vim*
|
||||
|
||||
This is for debugging Vim itself, when it doesn't work properly.
|
||||
|
||||
1. Location of a crash, using gcc and gdb |debug-gcc|
|
||||
2. Windows Bug Reporting |debug-win32|
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. Location of a crash, using gcc and gdb *debug-gcc*
|
||||
|
||||
When Vim crashes in one of the test files, and you are using gcc for
|
||||
compilation, here is what you can do to find out exactly where Vim crashes.
|
||||
This also applies when using the MingW tools.
|
||||
|
||||
1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
|
||||
which you can uncomment).
|
||||
|
||||
2. Execute these commands (replace "11" with the test that fails): >
|
||||
cd testdir
|
||||
gdb ../vim
|
||||
run -u unix.vim -U NONE -s dotest.in test11.in
|
||||
|
||||
3. Check where Vim crashes, gdb should give a message for this.
|
||||
|
||||
4. Get a stack trace from gdb with this command: >
|
||||
where
|
||||
< You can check out different places in the stack trace with: >
|
||||
frame 3
|
||||
< Replace "3" with one of the numbers in the stack trace.
|
||||
|
||||
==============================================================================
|
||||
|
||||
2. Windows Bug Reporting *debug-win32*
|
||||
|
||||
If the Windows version of Vim crashes in a reproducible manner,
|
||||
you can take some steps to provide a useful bug report.
|
||||
|
||||
First, you must obtain the debugger symbols (PDB) file for your executable:
|
||||
gvim.pdb for gvim.exe, or vim.pdb for vim.exe. It should be available
|
||||
from the same place that you obtained the executable. Be sure to use
|
||||
the PDB that matches the EXE.
|
||||
|
||||
If you built the executable yourself with the Microsoft Visual C++ compiler,
|
||||
then the PDB was built with the EXE.
|
||||
|
||||
You can download the Microsoft Visual C++ Toolkit from
|
||||
http://msdn.microsoft.com/visualc/vctoolkit2003/
|
||||
This contains the command-line tools, but not the Visual Studio IDE.
|
||||
|
||||
The Debugging Tools for Windows can be downloaded from
|
||||
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
|
||||
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.)
|
||||
|
||||
=========================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
@@ -1,4 +1,4 @@
|
||||
*develop.txt* For Vim version 7.0aa. Last change: 2005 Jun 13
|
||||
*develop.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -123,7 +123,8 @@ VIM IS... MAINTAINABLE *design-maintain*
|
||||
|
||||
- The source code should not become a mess. It should be reliable code.
|
||||
- Use the same layout in all files to make it easy to read |coding-style|.
|
||||
- Use comments in a useful way!
|
||||
- Use comments in a useful way! Quoting the function name and argument names
|
||||
is NOT useful. Do explain what they are for.
|
||||
- Porting to another platform should be made easy, without having to change
|
||||
too much platform-independent code.
|
||||
- Use the object-oriented spirit: Put data and code together. Minimize the
|
||||
@@ -237,8 +238,8 @@ get_env_value() Linux system function
|
||||
|
||||
VARIOUS *style-various*
|
||||
|
||||
Typedef'ed names should end in "_t": >
|
||||
typedef int some_t;
|
||||
Typedef'ed names should end in "_T": >
|
||||
typedef int some_T;
|
||||
Define'ed names should be uppercase: >
|
||||
#define SOME_THING
|
||||
Features always start with "FEAT_": >
|
||||
|
||||
@@ -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: 2005 Sep 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -218,7 +218,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 +235,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*
|
||||
|
||||
@@ -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: 2005 Dec 13
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -398,8 +398,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 +408,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 +418,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 7.0aa. Last change: 2005 Aug 05
|
||||
*eval.txt* For Vim version 7.0aa. Last change: 2005 Dec 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1272,12 +1272,13 @@ v:fcs_choice What should happen after a |FileChangedShell| event was
|
||||
Vim behaves like it is empty, there is no warning message.
|
||||
|
||||
*v:fname_in* *fname_in-variable*
|
||||
v:fname_in The name of the input file. Only valid while evaluating:
|
||||
v:fname_in The name of the input file. Valid while evaluating:
|
||||
option used for ~
|
||||
'charconvert' file to be converted
|
||||
'diffexpr' original file
|
||||
'patchexpr' original file
|
||||
'printexpr' file to be printed
|
||||
And set to the swap file name for |SwapExists|.
|
||||
|
||||
*v:fname_out* *fname_out-variable*
|
||||
v:fname_out The name of the output file. Only valid while
|
||||
@@ -1372,6 +1373,14 @@ v:progname Contains the name (with path removed) with which Vim was
|
||||
v:register The name of the register supplied to the last normal mode
|
||||
command. Empty if none were supplied. |getreg()| |setreg()|
|
||||
|
||||
*v:scrollstart* *scrollstart-variable*
|
||||
v:scrollstart String describing the script or function that caused the
|
||||
screen to scroll up. It's only set when it is empty, thus the
|
||||
first reason is remembered. It is set to "Unknown" for a
|
||||
typed command.
|
||||
This can be used to find out why your script causes the
|
||||
hit-enter prompt.
|
||||
|
||||
*v:servername* *servername-variable*
|
||||
v:servername The resulting registered |x11-clientserver| name if any.
|
||||
Read-only.
|
||||
@@ -1392,6 +1401,29 @@ v:shell_error Result of the last shell command. When non-zero, the last
|
||||
*v:statusmsg* *statusmsg-variable*
|
||||
v:statusmsg Last given status message. It's allowed to set this variable.
|
||||
|
||||
*v:swapname* *swapname-variable*
|
||||
v:swapname Only valid when executing |SwapExists| autocommands: Name of
|
||||
the swap file found. Read-only.
|
||||
|
||||
*v:swapchoice* *swapchoice-variable*
|
||||
v:swapchoice |SwapExists| autocommands can set this to the selected choice
|
||||
for handling an existing swap file:
|
||||
'o' Open read-only
|
||||
'e' Edit anyway
|
||||
'r' Recover
|
||||
'd' Delete swapfile
|
||||
'q' Quit
|
||||
'a' Abort
|
||||
The value should be a single-character string. An empty value
|
||||
results in the user being asked, as would happen when there is
|
||||
no SwapExists autocommand. The default is empty.
|
||||
|
||||
*v:swapcommand* *swapcommand-variable*
|
||||
v:swapcommand Normal mode ommand to be executed after a file has been
|
||||
opened. Can be used for a |SwapExists| autocommand to have
|
||||
another Vim open the file and jump to the right place. For
|
||||
example, when jumping to a tag the value is ":tag tagname\r".
|
||||
|
||||
*v:termresponse* *termresponse-variable*
|
||||
v:termresponse The escape sequence returned by the terminal for the |t_RV|
|
||||
termcap entry. It is set when Vim receives an escape sequence
|
||||
@@ -1520,6 +1552,7 @@ getcharmod( ) Number modifiers for the last typed character
|
||||
getbufvar( {expr}, {varname}) variable {varname} in buffer {expr}
|
||||
getcmdline() String return the current command-line
|
||||
getcmdpos() Number return cursor position in command-line
|
||||
getcmdtype() String return the current command-line type
|
||||
getcwd() String the current working directory
|
||||
getfperm( {fname}) String file permissions of file {fname}
|
||||
getfsize( {fname}) Number size in bytes of file {fname}
|
||||
@@ -1550,7 +1583,8 @@ iconv( {expr}, {from}, {to}) String convert encoding of {expr}
|
||||
indent( {lnum}) Number indent of line {lnum}
|
||||
index( {list}, {expr} [, {start} [, {ic}]])
|
||||
Number index in {list} where {expr} appears
|
||||
input( {prompt} [, {text}]) String get input from the user
|
||||
input( {prompt} [, {text} [, {completion}]])
|
||||
String get input from the user
|
||||
inputdialog( {p} [, {t} [, {c}]]) String like input() but in a GUI dialog
|
||||
inputrestore() Number restore typeahead
|
||||
inputsave() Number save and clear typeahead
|
||||
@@ -1607,6 +1641,8 @@ repeat( {expr}, {count}) String repeat {expr} {count} times
|
||||
resolve( {filename}) String get filename a shortcut points to
|
||||
reverse( {list}) List reverse {list} in-place
|
||||
search( {pattern} [, {flags}]) Number search for {pattern}
|
||||
searchdecl({name} [, {global} [, {thisblock}]])
|
||||
Number search for variable declaration
|
||||
searchpair( {start}, {middle}, {end} [, {flags} [, {skip}]])
|
||||
Number search for other end of start/end pair
|
||||
server2client( {clientid}, {string})
|
||||
@@ -1622,7 +1658,8 @@ simplify( {filename}) String simplify filename as much as possible
|
||||
sort( {list} [, {func}]) List sort {list}, using {func} to compare
|
||||
soundfold( {word}) String sound-fold {word}
|
||||
spellbadword() String badly spelled word at cursor
|
||||
spellsuggest({word} [, {max}]) List spelling suggestions
|
||||
spellsuggest( {word} [, {max} [, {capital}]])
|
||||
List spelling suggestions
|
||||
split( {expr} [, {pat} [, {keepempty}]])
|
||||
List make List from {pat} separated {expr}
|
||||
strftime( {format}[, {time}]) String time in specified format
|
||||
@@ -1643,7 +1680,8 @@ synIDattr( {synID}, {what} [, {mode}])
|
||||
String attribute {what} of syntax ID {synID}
|
||||
synIDtrans( {synID}) Number translated syntax ID of {synID}
|
||||
system( {expr} [, {input}]) String output of shell command/filter {expr}
|
||||
taglist({expr}) List list of tags matching {expr}
|
||||
taglist( {expr}) List list of tags matching {expr}
|
||||
tagfiles() List tags files used
|
||||
tempname() String name for a temporary file
|
||||
tolower( {expr}) String the String {expr} switched to lowercase
|
||||
toupper( {expr}) String the String {expr} switched to uppercase
|
||||
@@ -1863,6 +1901,7 @@ cindent({lnum}) *cindent()*
|
||||
relevant. {lnum} is used just like in |getline()|.
|
||||
When {lnum} is invalid or Vim was not compiled the |+cindent|
|
||||
feature, -1 is returned.
|
||||
See |C-indenting|.
|
||||
|
||||
*col()*
|
||||
col({expr}) The result is a Number, which is the byte index of the column
|
||||
@@ -2013,11 +2052,12 @@ cscope_connection([{num} , {dbpath} [, {prepend}]])
|
||||
<
|
||||
cursor({lnum}, {col}) *cursor()*
|
||||
Positions the cursor at the column {col} in the line {lnum}.
|
||||
The first column is one.
|
||||
Does not change the jumplist.
|
||||
If {lnum} is greater than the number of lines in the buffer,
|
||||
the cursor will be positioned at the last line in the buffer.
|
||||
If {lnum} is zero, the cursor will stay in the current line.
|
||||
If {col} is greater than the number of characters in the line,
|
||||
If {col} is greater than the number of bytes in the line,
|
||||
the cursor will be positioned at the last character in the
|
||||
line.
|
||||
If {col} is zero, the cursor will stay in the current column.
|
||||
@@ -2529,14 +2569,28 @@ getcmdline() *getcmdline()*
|
||||
|c_CTRL-R_=|.
|
||||
Example: >
|
||||
:cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
|
||||
< Also see |getcmdpos()| and |setcmdpos()|.
|
||||
< Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
|
||||
|
||||
getcmdpos() *getcmdpos()*
|
||||
Return the position of the cursor in the command line as a
|
||||
byte count. The first column is 1.
|
||||
Only works when editing the command line, thus requires use of
|
||||
|c_CTRL-\_e| or |c_CTRL-R_=|. Returns 0 otherwise.
|
||||
Also see |setcmdpos()| and |getcmdline()|.
|
||||
Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
|
||||
|
||||
getcmdtype() *getcmdtype()*
|
||||
Return the current command-line type. Possible return values
|
||||
are:
|
||||
: normal Ex command
|
||||
> debug mode command |debug-mode|
|
||||
/ forward search command
|
||||
? backward search command
|
||||
@ |input()| command
|
||||
- |:insert| or |:append| command
|
||||
Only works when editing the command line, thus requires use of
|
||||
|c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string
|
||||
otherwise.
|
||||
Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
|
||||
|
||||
*getcwd()*
|
||||
getcwd() The result is a String, which is the name of the current
|
||||
@@ -2641,6 +2695,9 @@ getqflist() *getqflist()*
|
||||
type type of the error, 'E', '1', etc.
|
||||
valid non-zero: recognized error message
|
||||
|
||||
When there is no error list or it's empty an empty list is
|
||||
returned.
|
||||
|
||||
Useful application: Find pattern matches in multiple files and
|
||||
do something with them: >
|
||||
:vimgrep /theword/jg *.c
|
||||
@@ -2903,19 +2960,34 @@ index({list}, {expr} [, {start} [, {ic}]]) *index()*
|
||||
:if index(numbers, 123) >= 0
|
||||
|
||||
|
||||
input({prompt} [, {text}]) *input()*
|
||||
input({prompt} [, {text} [, {completion}]]) *input()*
|
||||
The result is a String, which is whatever the user typed on
|
||||
the command-line. The parameter is either a prompt string, or
|
||||
a blank string (for no prompt). A '\n' can be used in the
|
||||
prompt to start a new line. The highlighting set with
|
||||
|:echohl| is used for the prompt. The input is entered just
|
||||
like a command-line, with the same editing commands and
|
||||
mappings. There is a separate history for lines typed for
|
||||
input().
|
||||
If the optional {text} is present, this is used for the
|
||||
default reply, as if the user typed this.
|
||||
NOTE: This must not be used in a startup file, for the
|
||||
versions that only run in GUI mode (e.g., the Win32 GUI).
|
||||
prompt to start a new line.
|
||||
The highlighting set with |:echohl| is used for the prompt.
|
||||
The input is entered just like a command-line, with the same
|
||||
editing commands and mappings. There is a separate history
|
||||
for lines typed for input().
|
||||
Example: >
|
||||
:if input("Coffee or beer? ") == "beer"
|
||||
: echo "Cheers!"
|
||||
:endif
|
||||
<
|
||||
If the optional {text} is present and not empty, this is used
|
||||
for the default reply, as if the user typed this. Example: >
|
||||
:let color = input("Color? ", "white")
|
||||
|
||||
< The optional {completion} argument specifies the type of
|
||||
completion supported for the input. Without it completion is
|
||||
not performed. The supported completion types are the same as
|
||||
that can be supplied to a user-defined command using the
|
||||
"-complete=" argument. Refer to |:command-completion| for
|
||||
more information. Example: >
|
||||
let fname = input("File: ", "", "file")
|
||||
<
|
||||
NOTE: This function must not be used in a startup file, for
|
||||
the versions that only run in GUI mode (e.g., the Win32 GUI).
|
||||
Note: When input() is called from within a mapping it will
|
||||
consume remaining characters from that mapping, because a
|
||||
mapping is handled like the characters were typed.
|
||||
@@ -2924,13 +2996,7 @@ input({prompt} [, {text}]) *input()*
|
||||
that further characters follow in the mapping, e.g., by using
|
||||
|:execute| or |:normal|.
|
||||
|
||||
Example: >
|
||||
:if input("Coffee or beer? ") == "beer"
|
||||
: echo "Cheers!"
|
||||
:endif
|
||||
< Example with default text: >
|
||||
:let color = input("Color? ", "white")
|
||||
< Example with a mapping: >
|
||||
Example with a mapping: >
|
||||
:nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR>
|
||||
:function GetFoo()
|
||||
: call inputsave()
|
||||
@@ -2950,6 +3016,22 @@ inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()*
|
||||
omitted an empty string is returned.
|
||||
Hitting <Enter> works like pressing the OK button. Hitting
|
||||
<Esc> works like pressing the Cancel button.
|
||||
NOTE: Command-line completion is not supported.
|
||||
|
||||
inputlist({textlist}) *inputlist()*
|
||||
{textlist} must be a list of strings. This list is displayed,
|
||||
one string per line. The user will be prompted to enter a
|
||||
number, which is returned.
|
||||
The user can also select an item by clicking on it with the
|
||||
mouse. For the first string 0 is returned. When clicking
|
||||
above the first item a negative number is returned. When
|
||||
clicking on the prompt one more than the length of {textlist}
|
||||
is returned.
|
||||
Make sure {textlist} has less then 'lines' entries, otherwise
|
||||
it won't work. It's a good idea to put the entry number at
|
||||
the start of the string. Example: >
|
||||
let color = inputlist(['Select color:', '1. red',
|
||||
\ '2. green', '3. blue'])
|
||||
|
||||
inputrestore() *inputrestore()*
|
||||
Restore typeahead that was saved with a previous inputsave().
|
||||
@@ -2974,6 +3056,7 @@ inputsecret({prompt} [, {text}]) *inputsecret()*
|
||||
|history| stack.
|
||||
The result is a String, which is whatever the user actually
|
||||
typed on the command-line in response to the issued prompt.
|
||||
NOTE: Command-line completion is not supported.
|
||||
|
||||
insert({list}, {item} [, {idx}]) *insert()*
|
||||
Insert {item} at the start of List {list}.
|
||||
@@ -3565,6 +3648,8 @@ remote_foreground({server}) *remote_foreground()*
|
||||
< Except that on Win32 systems the client does the work, to work
|
||||
around the problem that the OS doesn't always allow the server
|
||||
to bring itself to the foreground.
|
||||
Note: This does not restore the window if it was minimized,
|
||||
like foreground() does.
|
||||
This function is not available in the |sandbox|.
|
||||
{only in the Win32, Athena, Motif and GTK GUI versions and the
|
||||
Win32 console version}
|
||||
@@ -3708,6 +3793,25 @@ search({pattern} [, {flags}]) *search()*
|
||||
: let n = n + 1
|
||||
:endwhile
|
||||
<
|
||||
|
||||
searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()*
|
||||
Search for the declaration of {name}.
|
||||
|
||||
With a non-zero {global} argument it works like |gD|, find
|
||||
first match in the file. Otherwise it works like |gd|, find
|
||||
first match in the function.
|
||||
|
||||
With a non-zero {thisblock} argument matches in a {} block
|
||||
that ends before the cursor position are ignored. Avoids
|
||||
finding variable declarations only valid in another scope.
|
||||
|
||||
Moves the cursor to the found match.
|
||||
Returns zero for success, non-zero for failure.
|
||||
Example: >
|
||||
if searchdecl('myvar') == 0
|
||||
echo getline('.')
|
||||
endif
|
||||
<
|
||||
*searchpair()*
|
||||
searchpair({start}, {middle}, {end} [, {flags} [, {skip}]])
|
||||
Search for the match of a nested start-end pair. This can be
|
||||
@@ -3982,25 +4086,49 @@ soundfold({word})
|
||||
the method can be quite slow.
|
||||
|
||||
*spellbadword()*
|
||||
spellbadword() Return the badly spelled word under or after the cursor.
|
||||
The cursor is advanced to the start of the bad word.
|
||||
When no bad word is found in the cursor line an empty String
|
||||
is returned and the cursor doesn't move.
|
||||
spellbadword([{sentence}])
|
||||
Without argument: The result is the badly spelled word under
|
||||
or after the cursor. The cursor is moved to the start of the
|
||||
bad word. When no bad word is found in the cursor line the
|
||||
result is an empty string and the cursor doesn't move.
|
||||
|
||||
With argument: The result is the first word in {sentence} that
|
||||
is badly spelled. If there are no spelling mistakes the
|
||||
result is an empty string.
|
||||
|
||||
The return value is a list with two items:
|
||||
- The badly spelled word or an empty string.
|
||||
- The type of the spelling error:
|
||||
"bad" spelling mistake
|
||||
"rare" rare word
|
||||
"local" word only valid in another region
|
||||
"caps" word should start with Capital
|
||||
Example: >
|
||||
echo spellbadword("the quik brown fox")
|
||||
< ['quik', 'bad'] ~
|
||||
|
||||
The spelling information for the current window is used. The
|
||||
'spell' option must be set and the value of 'spelllang' is
|
||||
used.
|
||||
|
||||
*spellsuggest()*
|
||||
spellsuggest({word} [, {max}])
|
||||
spellsuggest({word} [, {max} [, {capital}]])
|
||||
Return a List with spelling suggestions to replace {word}.
|
||||
When {max} is given up to this number of suggestions are
|
||||
returned. Otherwise up to 25 suggestions are returned.
|
||||
|
||||
When the {capital} argument is given and it's non-zero only
|
||||
suggestions with a leading capital will be given. Use this
|
||||
after a match with 'spellcapcheck'.
|
||||
|
||||
{word} can be a badly spelled word followed by other text.
|
||||
This allows for joining two words that were split. The
|
||||
suggestions also include the following text, thus you can
|
||||
replace a line.
|
||||
|
||||
{word} may also be a good word. Similar words will then be
|
||||
returned. {word} itself is also included, most likely as the
|
||||
first entry, thus this can be used to check spelling.
|
||||
returned. {word} itself is not included in the suggestions,
|
||||
although it may appear capitalized.
|
||||
|
||||
The spelling information for the current window is used. The
|
||||
'spell' option must be set and the values of 'spelllang' and
|
||||
@@ -4080,19 +4208,19 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number,
|
||||
|
||||
*strlen()*
|
||||
strlen({expr}) The result is a Number, which is the length of the String
|
||||
{expr} in bytes. If you want to count the number of
|
||||
multi-byte characters use something like this: >
|
||||
{expr} in bytes.
|
||||
If you want to count the number of multi-byte characters (not
|
||||
counting composing characters) use something like this: >
|
||||
|
||||
:let len = strlen(substitute(str, ".", "x", "g"))
|
||||
|
||||
< Composing characters are not counted.
|
||||
<
|
||||
If the argument is a Number it is first converted to a String.
|
||||
For other types an error is given.
|
||||
Also see |len()|.
|
||||
|
||||
strpart({src}, {start}[, {len}]) *strpart()*
|
||||
The result is a String, which is part of {src}, starting from
|
||||
byte {start}, with the length {len}.
|
||||
byte {start}, with the byte length {len}.
|
||||
When non-existing bytes are included, this doesn't result in
|
||||
an error, the bytes are simply omitted.
|
||||
If {len} is missing, the copy continues from {start} till the
|
||||
@@ -4281,6 +4409,10 @@ taglist({expr}) *taglist()*
|
||||
located by Vim. Refer to |tags-file-format| for the format of
|
||||
the tags file generated by the different ctags tools.
|
||||
|
||||
*tagfiles()*
|
||||
tagfiles() Returns a List with the file names used to search for tags for
|
||||
the current buffer. This is the 'tags' option expanded.
|
||||
|
||||
|
||||
tempname() *tempname()* *temp-file-name*
|
||||
The result is a String, which is the name of a file that
|
||||
@@ -4405,6 +4537,8 @@ winheight({nr}) *winheight()*
|
||||
winline() The result is a Number, which is the screen line of the cursor
|
||||
in the window. This is counting screen lines from the top of
|
||||
the window. The first line is one.
|
||||
If the cursor was moved the view on the file will be updated
|
||||
first, this may cause a scroll.
|
||||
|
||||
*winnr()*
|
||||
winnr([{arg}]) The result is a Number, which is the number of the current
|
||||
@@ -4667,7 +4801,8 @@ builtin functions. To prevent from using the same name in different scripts
|
||||
avoid obvious, short names. A good habit is to start the function name with
|
||||
the name of the script, e.g., "HTMLcolor()".
|
||||
|
||||
It's also possible to use curly braces, see |curly-braces-names|.
|
||||
It's also possible to use curly braces, see |curly-braces-names|. And the
|
||||
|autoload| facility is useful to define a function only when it's called.
|
||||
|
||||
*local-function*
|
||||
A function local to a script must start with "s:". A local script function
|
||||
@@ -4683,7 +4818,22 @@ instead of "s:" when the mapping is expanded outside of the script.
|
||||
{name} can also be a Dictionary entry that is a
|
||||
Funcref: >
|
||||
:function dict.init
|
||||
< *E124* *E125*
|
||||
|
||||
:fu[nction] /{pattern} List functions with a name matching {pattern}.
|
||||
Example that lists all functions ending with "File": >
|
||||
:function /File$
|
||||
<
|
||||
*:function-verbose*
|
||||
When 'verbose' is non-zero, listing a function will also display where it was
|
||||
last defined. Example: >
|
||||
|
||||
:verbose function SetFileTypeSH
|
||||
function SetFileTypeSH(name)
|
||||
Last set from /usr/share/vim/vim-7.0/filetype.vim
|
||||
<
|
||||
See |:verbose-cmd| for more information.
|
||||
|
||||
*E124* *E125*
|
||||
:fu[nction][!] {name}([arguments]) [range] [abort] [dict]
|
||||
Define a new function by the name {name}. The name
|
||||
must be made of alphanumeric characters and '_', and
|
||||
@@ -4911,7 +5061,7 @@ then define the function like this: >
|
||||
echo "Done!"
|
||||
endfunction
|
||||
|
||||
The file name and the name used before the colon in the function must match
|
||||
The file name and the name used before the # in the function must match
|
||||
exactly, and the defined function must have the name exactly as it will be
|
||||
called.
|
||||
|
||||
@@ -4922,13 +5072,13 @@ a path separator. Thus when calling a function: >
|
||||
|
||||
Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
|
||||
|
||||
The name before the first colon must be at least two characters long,
|
||||
otherwise it looks like a scope, such as "s:".
|
||||
|
||||
This also works when reading a variable that has not been set yet: >
|
||||
|
||||
:let l = foo#bar#lvar
|
||||
|
||||
However, when the autoload script was already loaded it won't be loaded again
|
||||
for an unknown variable.
|
||||
|
||||
When assigning a value to such a variable nothing special happens. This can
|
||||
be used to pass settings to the autoload script before it's loaded: >
|
||||
|
||||
@@ -5051,7 +5201,7 @@ This would call the function "my_func_whizz(parameter)".
|
||||
always converted to the type of the option.
|
||||
For an option local to a window or buffer the effect
|
||||
is just like using the |:set| command: both the local
|
||||
value and the global value is changed.
|
||||
value and the global value are changed.
|
||||
Example: >
|
||||
:let &path = &path . ',/usr/local/include'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Sep 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -44,15 +44,21 @@ Detail: The ":filetype on" command will load one of these files:
|
||||
name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
|
||||
contents of the file.
|
||||
|
||||
To add your own file types, see |new-filetype| below.
|
||||
To add your own file types, see |new-filetype| below. To search for help on a
|
||||
filetype prepend "ft-" and optionally append "-syntax", "-indent" or
|
||||
"-plugin". For example: >
|
||||
:help ft-vim-indent
|
||||
:help ft-vim-syntax
|
||||
:help ft-man-plugin
|
||||
|
||||
If the file type is not detected automatically, or it finds the wrong type,
|
||||
you can either set the 'filetype' option manually, or add a modeline to your
|
||||
file. Example, for in an IDL file use the command: >
|
||||
:set filetype=idl
|
||||
or add this |modeline| to the file: >
|
||||
/* vim: set filetype=idl : */
|
||||
<
|
||||
|
||||
or add this |modeline| to the file:
|
||||
/* vim: set filetype=idl : */ ~
|
||||
|
||||
*:filetype-plugin-on*
|
||||
You can enable loading the plugin files for specific file types with: >
|
||||
:filetype plugin on
|
||||
@@ -132,16 +138,16 @@ kind of file it is. This doesn't always work. A number of global variables
|
||||
can be used to overrule the filetype used for certain extensions:
|
||||
|
||||
file name variable ~
|
||||
*.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax|
|
||||
*.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax|
|
||||
*.asm g:asmsyntax |asm-syntax|
|
||||
*.asa g:filetype_asa |ft-aspvbs-syntax| |ft-aspperl-syntax|
|
||||
*.asp g:filetype_asp |ft-aspvbs-syntax| |ft-aspperl-syntax|
|
||||
*.asm g:asmsyntax |ft-asm-syntax|
|
||||
*.prg g:filetype_prg
|
||||
*.pl g:filetype_pl
|
||||
*.inc g:filetype_inc
|
||||
*.w g:filetype_w |cweb-syntax|
|
||||
*.i g:filetype_i |progress-syntax|
|
||||
*.p g:filetype_p |pascal-syntax|
|
||||
*.sh g:bash_is_sh |sh-syntax|
|
||||
*.w g:filetype_w |ft-cweb-syntax|
|
||||
*.i g:filetype_i |ft-progress-syntax|
|
||||
*.p g:filetype_p |ft-pascal-syntax|
|
||||
*.sh g:bash_is_sh |ft-sh-syntax|
|
||||
|
||||
*filetype-ignore*
|
||||
To avoid that certain files are being inspected, the g:ft_ignore_pat variable
|
||||
@@ -178,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.
|
||||
|
||||
@@ -380,7 +387,7 @@ ways to change this:
|
||||
3. Docs for the default filetype plugins. *ftplugin-docs*
|
||||
|
||||
|
||||
CHANGELOG *changelog-plugin*
|
||||
CHANGELOG *ft-changelog-plugin*
|
||||
|
||||
Allows for easy entrance of Changelog entries in Changelog files. There are
|
||||
some commands, mappings, and variables worth exploring:
|
||||
@@ -401,7 +408,7 @@ Local mappings:
|
||||
Global mappings:
|
||||
NOTE: The global mappings are accessed by sourcing the
|
||||
ftplugin/changelog.vim file first, e.g. with >
|
||||
runtime ftplugin/man.vim
|
||||
runtime ftplugin/changelog.vim
|
||||
< in your |.vimrc|.
|
||||
<Leader>o Switches to the ChangeLog buffer opened for the
|
||||
current directory, or opens it in a new buffer if it
|
||||
@@ -466,7 +473,7 @@ under it. If not found, a new entry and item is prepended to the beginning of
|
||||
the Changelog.
|
||||
|
||||
|
||||
FORTRAN *fortran-plugin*
|
||||
FORTRAN *ft-fortran-plugin*
|
||||
|
||||
Options:
|
||||
'expandtab' is switched on to avoid tabs as required by the Fortran
|
||||
@@ -476,10 +483,10 @@ Options:
|
||||
'formatoptions' is set to break code and comment lines and to preserve long
|
||||
lines. You can format comments with |gq|.
|
||||
For further discussion of fortran_have_tabs and the method used for the
|
||||
detection of source format see |fortran-syntax|.
|
||||
detection of source format see |ft-fortran-syntax|.
|
||||
|
||||
|
||||
MAIL *mail-plugin*
|
||||
MAIL *ft-mail-plugin*
|
||||
|
||||
Options:
|
||||
'modeline' is switched off to avoid the danger of trojan horses, and to
|
||||
@@ -496,7 +503,7 @@ Local mappings:
|
||||
to the end of the file in Normal mode. This means "> " is inserted in
|
||||
each line.
|
||||
|
||||
MAN *man-plugin* *:Man*
|
||||
MAN *ft-man-plugin* *:Man*
|
||||
|
||||
Displays a manual page in a nice way. Also see the user manual
|
||||
|find-manpage|.
|
||||
@@ -523,7 +530,7 @@ CTRL-] Jump to the manual page for the word under the cursor.
|
||||
CTRL-T Jump back to the previous manual page.
|
||||
|
||||
|
||||
RPM SPEC *spec-plugin*
|
||||
RPM SPEC *ft-spec-plugin*
|
||||
|
||||
Since the text for this plugin is rather long it has been put in a separate
|
||||
file: |pi_spec.txt|.
|
||||
|
||||
@@ -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 Jul 21
|
||||
*gui.txt* For Vim version 7.0aa. Last change: 2005 Aug 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -79,7 +79,7 @@ All this happens AFTER the normal Vim initializations, like reading your
|
||||
But the GUI window is only opened after all the initializations have been
|
||||
carried out. If you want some commands to be executed just after opening the
|
||||
GUI window, use the |GUIEnter| autocommand event. Example: >
|
||||
:autocommand GUIEnter * winpos 100 50
|
||||
:autocmd GUIEnter * winpos 100 50
|
||||
|
||||
You can use the gvimrc files to set up your own customized menus (see |:menu|)
|
||||
and initialize other things that you may want to set up differently from the
|
||||
|
||||
@@ -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 Mar 19
|
||||
*help.txt* For Vim version 7.0aa. Last change: 2005 Nov 30
|
||||
|
||||
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".
|
||||
|
||||
@@ -97,6 +97,7 @@ General subjects ~
|
||||
|quotes.txt| remarks from users of Vim
|
||||
|todo.txt| known problems and desired extensions
|
||||
|develop.txt| development of Vim
|
||||
|debug.txt| debugging Vim itself
|
||||
|uganda.txt| Vim distribution conditions and what to do with your money
|
||||
|
||||
Basic editing ~
|
||||
@@ -190,6 +191,13 @@ Standard plugins ~
|
||||
|pi_expl.txt| File explorer
|
||||
|
||||
LOCAL ADDITIONS: *local-additions*
|
||||
|cecutil.txt| DrChip's Utilities Jun 11, 2004
|
||||
|engspchk.txt| English Spelling Checker (v61) Mar 14, 2005
|
||||
|example.txt| Example for a locally added help file
|
||||
|matchit.txt| Extended "%" matching
|
||||
|test.txt| Testing the h<>lp c<>mm<6D>nd n<>w
|
||||
|typecorr.txt| Plugin for correcting typing mistakes
|
||||
|helpp.txt| Dummy line to avoid an error message
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
*bars* Bars example
|
||||
|
||||
@@ -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: 2005 Oct 14
|
||||
|
||||
|
||||
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}
|
||||
|
||||
@@ -299,5 +300,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 Mar 29
|
||||
*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*
|
||||
@@ -159,17 +160,36 @@ Methods:
|
||||
buffer Returns the buffer displayed in the window.
|
||||
height Returns the height of the window.
|
||||
height = {n} Sets the window height to {n}.
|
||||
width Returns the width of the window.
|
||||
width = {n} Sets the window width to {n}.
|
||||
cursor Returns a [row, col] array for the cursor position.
|
||||
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 @@
|
||||
*indent.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
|
||||
*indent.txt* For Vim version 7.0aa. Last change: 2005 Aug 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -449,7 +449,7 @@ $VIMRUNTIME/indent directory for examples.
|
||||
REMARKS ABOUT SPECIFIC INDENT FILES ~
|
||||
|
||||
|
||||
FORTRAN *fortran-indent*
|
||||
FORTRAN *ft-fortran-indent*
|
||||
|
||||
Block if, select case, and where constructs are indented. Comments, labelled
|
||||
statements and continuation lines are indented if the Fortran is in free
|
||||
@@ -457,7 +457,7 @@ source form, whereas they are not indented if the Fortran is in fixed source
|
||||
form because of the left margin requirements. Hence manual indent corrections
|
||||
will be necessary for labelled statements and continuation lines when fixed
|
||||
source form is being used. For further discussion of the method used for the
|
||||
detection of source format see |fortran-syntax|.
|
||||
detection of source format see |ft-fortran-syntax|.
|
||||
|
||||
Do loops ~
|
||||
All do loops are left unindented by default. Do loops can be unstructured in
|
||||
@@ -485,7 +485,7 @@ to get do loops indented in .f90 files and left alone in Fortran files with
|
||||
other extensions such as .for.
|
||||
|
||||
|
||||
PYTHON *python-indent*
|
||||
PYTHON *ft-python-indent*
|
||||
|
||||
The amount of indent can be set for the following situations. The examples
|
||||
given are de the defaults. Note that the variables are set to an expression,
|
||||
@@ -499,7 +499,7 @@ Indent for a continuation line: >
|
||||
let g:pyindent_continue = '&sw * 2'
|
||||
|
||||
|
||||
VERILOG *verilog-indent*
|
||||
VERILOG *ft-verilog-indent*
|
||||
|
||||
General block statements such as if, for, case, always, initial, function,
|
||||
specify and begin, etc., are indented. The module block statements (first
|
||||
@@ -534,7 +534,7 @@ In addition, you can turn the verbose mode for debug issue: >
|
||||
Make sure to do ":set cmdheight=2" first to allow the display of the message.
|
||||
|
||||
|
||||
VIM *vim-indent*
|
||||
VIM *ft-vim-indent*
|
||||
|
||||
For indenting Vim scripts there is one variable that specifies the amount of
|
||||
indent for a continuation line, a line that starts with a backslash: >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 7.0aa. Last change: 2005 Jul 29
|
||||
*index.txt* For Vim version 7.0aa. Last change: 2005 Dec 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -150,13 +150,15 @@ 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
|
||||
|i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y scroll down
|
||||
|i_CTRL-X_CTRL-U| CTRL-X CTRL-U complete with 'completefunc'
|
||||
|i_CTRL-X_CTRL-V| CTRL-X CTRL-V complete like in : command line
|
||||
|i_CTRL-X_CTRL-]| CTRL-X CTRL-] complete tags
|
||||
|i_CTRL-X_s| CTRL-X s spelling suggestions
|
||||
{not available when compiled without the +insert_expand feature}
|
||||
|
||||
==============================================================================
|
||||
@@ -341,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}
|
||||
@@ -371,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
|
||||
@@ -401,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
|
||||
@@ -734,6 +736,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$"
|
||||
@@ -757,16 +760,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= make 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-"
|
||||
@@ -778,6 +784,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'
|
||||
@@ -794,6 +801,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"
|
||||
@@ -1248,6 +1256,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
|
||||
@@ -1345,7 +1354,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
|
||||
@@ -1369,7 +1378,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
|
||||
@@ -1379,6 +1388,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*insert.txt* For Vim version 7.0aa. Last change: 2005 Aug 01
|
||||
*insert.txt* For Vim version 7.0aa. Last change: 2005 Dec 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -354,6 +354,8 @@ 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-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*
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
@@ -363,7 +365,8 @@ option.
|
||||
The CTRL-O command sometimes has a side effect: If the cursor was beyond the
|
||||
end of the line, it will be put on the last character in the line. In
|
||||
mappings it's often better to use <Esc> (first put an "x" in the text, <Esc>
|
||||
will then always put the cursor on it).
|
||||
will then always put the cursor on it). Or use CTRL-\ CTRL-O, but then
|
||||
beware of the cursor possibly being beyond the end of the line.
|
||||
|
||||
The shifted cursor keys are not available on all terminals.
|
||||
|
||||
@@ -566,8 +569,9 @@ 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|
|
||||
12. keywords in 'complete' |i_CTRL-N|
|
||||
11. omni completion |i_CTRL-X_CTRL-O|
|
||||
12. Spelling suggestions |i_CTRL-X_s|
|
||||
13. keywords in 'complete' |i_CTRL-N|
|
||||
|
||||
All these (except 2) are done in CTRL-X mode. This is a sub-mode of Insert
|
||||
and Replace modes. You enter CTRL-X mode by typing CTRL-X and one of the
|
||||
@@ -670,6 +674,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).
|
||||
@@ -864,8 +871,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 option for how the function is called and an
|
||||
example.
|
||||
'completefunc' option. See the 'completefunc' help for how the function
|
||||
is called and an example.
|
||||
|
||||
*i_CTRL-X_CTRL-U*
|
||||
CTRL-X CTRL-U Guess what kind of item is in front of the cursor and
|
||||
@@ -878,9 +885,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 supernatural being.
|
||||
Completion is done by a function that can be defined by the user with the
|
||||
'omnifunc' option. This is to be used for filetype-specific completion.
|
||||
|
||||
See the 'completefunc' help for how the function is called and an example.
|
||||
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
|
||||
@@ -893,6 +904,28 @@ CTRL-X CTRL-O Guess what kind of item is in front of the cursor and
|
||||
previous one.
|
||||
|
||||
|
||||
Spelling suggestions *compl-spelling*
|
||||
|
||||
A word before or at the cursor is located and correctly spelled words are
|
||||
suggested to replace it. If there is a badly spelled word in the line, before
|
||||
or under the cursor, the cursor is moved to after it. Otherwise the word just
|
||||
before the cursor is used for suggestions, even though it isn't badly spelled.
|
||||
|
||||
NOTE: CTRL-S suspends display in many Unix terminals. Use 's' instead. Type
|
||||
CTRL-Q to resume displaying.
|
||||
|
||||
*i_CTRL-X_CTRL-S* *i_CTRL-X_s*
|
||||
CTRL-X CTRL-S or
|
||||
CTRL-X s Locate the word in front of the cursor and find the
|
||||
first spell suggestion for it.
|
||||
CTRL-S or
|
||||
CTRL-N Use the next suggestion. This replaces the previous
|
||||
one. Note that you can't use 's' here.
|
||||
|
||||
CTRL-P Use the previous suggestion. This replaces the
|
||||
previous one.
|
||||
|
||||
|
||||
Completing keywords from different sources *compl-generic*
|
||||
|
||||
*i_CTRL-N*
|
||||
@@ -918,6 +951,202 @@ 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.
|
||||
|
||||
|
||||
INSERT COMPLETION POPUP MENU *ins-completion-menu*
|
||||
|
||||
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.
|
||||
|
||||
While the menu is displayed these keys have a special meaning:
|
||||
<CR> and <Enter>: Accept the currently selected match
|
||||
<Up>: Select the previous match, as if CTRL-P was used
|
||||
<Down>: Select the next match, as if CTRL-N was used
|
||||
|
||||
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|
|
||||
|
||||
|
||||
Filetype-specific remarks for omni completion *compl-omni-filetypes*
|
||||
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
|
||||
(X)HTML *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 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
|
||||
- complete values of "class" and "id" attributes with data obtained from
|
||||
style tag and included CSS files
|
||||
- when completing "style" attribute or working inside of "style" tag
|
||||
switch to |ft-css-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.
|
||||
|
||||
|
||||
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"]}
|
||||
|
||||
This example should be put in "autoload/xml/crippledhtml.vim" file.
|
||||
|
||||
In example are visible two 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.
|
||||
|
||||
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*
|
||||
|
||||
@@ -1044,6 +1273,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}
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*intro.txt* For Vim version 7.0aa. Last change: 2005 Jun 12
|
||||
*intro.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -151,31 +151,19 @@ example and try to find out which settings or other things influence the
|
||||
appearance of the bug. Try different machines, if possible. Send me patches
|
||||
if you can!
|
||||
|
||||
In case of doubt, use: >
|
||||
It will help to include information about the version of Vim you are using and
|
||||
your setup. You can get the information with this command: >
|
||||
:so $VIMRUNTIME/bugreport.vim
|
||||
This will create a file "bugreport.txt" in the current directory, with a lot
|
||||
of information of your environment. Before sending this out, check if it
|
||||
doesn't contain any confidential information!
|
||||
|
||||
*debug-vim*
|
||||
When Vim crashes in one of the test files, and you are using gcc for
|
||||
compilation, here is what you can do to find out exactly where Vim crashes:
|
||||
If Vim crashes, please try to find out where. You can find help on this here:
|
||||
|debug.txt|.
|
||||
|
||||
1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
|
||||
which you can uncomment).
|
||||
|
||||
2. Execute these commands (replace "11" with the test that fails): >
|
||||
cd testdir
|
||||
gdb ../vim
|
||||
run -u unix.vim -U NONE -s dotest.in test11.in
|
||||
|
||||
3. Check where Vim crashes, gdb should give a message for this.
|
||||
|
||||
4. Get a stack trace from gdb with this command: >
|
||||
where
|
||||
< You can check out different places in the stack trace with: >
|
||||
frame 3
|
||||
< Replace "3" with one of the numbers in the stack trace.
|
||||
In case of doubt or when you wonder if the problem has already been fixed but
|
||||
you can't find a fix for it, become a member of the vim-dev maillist and ask
|
||||
your question there. |maillist|
|
||||
|
||||
*year-2000* *Y2K*
|
||||
Since Vim internally doesn't use dates for editing, there is no year 2000
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 7.0aa. Last change: 2005 Jul 21
|
||||
*map.txt* For Vim version 7.0aa. Last change: 2005 Dec 12
|
||||
|
||||
|
||||
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.
|
||||
@@ -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: >
|
||||
@@ -167,7 +196,7 @@ Example of what will fail: >
|
||||
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.
|
||||
@@ -236,19 +265,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 ~
|
||||
@@ -273,6 +292,58 @@ with a space.
|
||||
Note: When using mappings for Visual mode, you can use the "'<" mark, which
|
||||
is the start of the last selected Visual area in the current buffer |'<|.
|
||||
|
||||
*:map-verbose*
|
||||
When 'verbose' is non-zero, listing a key map will also display where it was
|
||||
last defined. Example: >
|
||||
|
||||
:verbose map <C-W>*
|
||||
n <C-W>* * <C-W><C-S>*
|
||||
Last set from /home/abcd/.vimrc
|
||||
|
||||
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
|
||||
@@ -284,23 +355,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
|
||||
@@ -320,6 +380,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".
|
||||
@@ -407,14 +479,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
|
||||
@@ -425,7 +499,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). >
|
||||
|
||||
@@ -434,7 +510,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",
|
||||
@@ -447,14 +525,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
|
||||
@@ -470,6 +549,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
|
||||
@@ -506,43 +588,103 @@ 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 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, aterm and rxvt should work well by default, unless you 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@*
|
||||
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*
|
||||
@@ -656,6 +798,16 @@ used in a |filetype-plugin| file. Example for a C plugin file: >
|
||||
mode, '!' for both. These are the same as for
|
||||
mappings, see |map-listing|.
|
||||
|
||||
*:abbreviate-verbose*
|
||||
When 'verbose' is non-zero, listing an abbreviation will also display where it
|
||||
was last defined. Example: >
|
||||
|
||||
:verbose abbreviate
|
||||
! teh the
|
||||
Last set from /home/abcd/vim/abbr.vim
|
||||
|
||||
See |:verbose-cmd| for more information.
|
||||
|
||||
:ab[breviate] {lhs} list the abbreviations that start with {lhs}
|
||||
You may need to insert a CTRL-V (type it twice) to
|
||||
avoid that a typed {lhs} is expanded, since
|
||||
@@ -855,6 +1007,17 @@ scripts.
|
||||
|
||||
:com[mand] {cmd} List the user-defined commands that start with {cmd}
|
||||
|
||||
*:command-verbose*
|
||||
When 'verbose' is non-zero, listing a command will also display where it was
|
||||
last defined. Example: >
|
||||
|
||||
:verbose command TOhtml
|
||||
Name Args Range Complete Definition
|
||||
TOhtml 0 % :call Convert2HTML(<line1>, <line2>)
|
||||
Last set from /usr/share/vim/vim-7.0/plugin/tohtml.vim
|
||||
<
|
||||
See |:verbose-cmd| for more information.
|
||||
|
||||
*E174* *E182*
|
||||
:com[mand][!] [{attr}...] {cmd} {rep}
|
||||
Define a user command. The name of the command is
|
||||
@@ -934,8 +1097,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 >
|
||||
@@ -949,13 +1114,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
|
||||
@@ -977,6 +1142,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,
|
||||
@@ -1056,8 +1222,7 @@ To allow commands to pass their arguments on to a user-defined function, there
|
||||
is a special form <f-args> ("function args"). This splits the command
|
||||
arguments at spaces and Tabs, quotes each argument individually, and the
|
||||
<f-args> sequence is replaced by the comma-separated list of quoted arguments.
|
||||
See the Mycmd example below. When there is no argument, <f-args> also has no
|
||||
argument.
|
||||
See the Mycmd example below. If no arguments are given <f-args> is removed.
|
||||
|
||||
Examples >
|
||||
|
||||
|
||||
@@ -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: 2005 Oct 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -23,7 +23,7 @@ The number of remembered messages is fixed at 20.
|
||||
|
||||
*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 +589,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
|
||||
@@ -768,6 +769,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 +817,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: 2005 Dec 12
|
||||
|
||||
|
||||
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.
|
||||
@@ -642,6 +643,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 +974,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 @@
|
||||
*options.txt* For Vim version 7.0aa. Last change: 2005 Aug 05
|
||||
*options.txt* For Vim version 7.0aa. Last change: 2005 Dec 13
|
||||
|
||||
|
||||
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}
|
||||
|
||||
@@ -560,12 +558,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 +986,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)
|
||||
@@ -1100,7 +1109,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not available when compiled without the |+linebreak|
|
||||
feature}
|
||||
This option lets you choose which characters might cause a line
|
||||
break if 'linebreak' is on.
|
||||
break if 'linebreak' is on. Only works for ASCII and also for 8-bit
|
||||
characters when 'encoding' is an 8-bit encoding.
|
||||
|
||||
*'browsedir'* *'bsdir'*
|
||||
'browsedir' 'bsdir' string (default: "last")
|
||||
@@ -1200,9 +1210,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
these words, separated by a comma:
|
||||
internal Use internal case mapping functions, the current
|
||||
locale does not change the case mapping. This only
|
||||
matters when 'encoding' is a Unicode encoding. When
|
||||
"internal" is omitted, the towupper() and towlower()
|
||||
system library functions are used when available.
|
||||
matters when 'encoding' is a Unicode encoding,
|
||||
"latin1" or "iso-8859-15". When "internal" is
|
||||
omitted, the towupper() and towlower() system library
|
||||
functions are used when available.
|
||||
keepascii For the ASCII characters (0x00 to 0x7f) use the US
|
||||
case mapping, the current locale is not effective.
|
||||
This probably only matters for Turkish.
|
||||
@@ -1425,6 +1436,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
|
||||
@@ -1589,23 +1601,29 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
This option specifies a function to be used for CTRL-X CTRL-U
|
||||
completion. |i_CTRL-X_CTRL-U|
|
||||
|
||||
The function will be invoked with three arguments:
|
||||
a:findstart either 1 or 0
|
||||
a:col column in the cursor line where the completion ends,
|
||||
first column is zero
|
||||
a:base the text with which matches should match
|
||||
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.
|
||||
|
||||
When the a:findstart argument is 1, the function must return the
|
||||
column of where the completion starts. It must be a number between
|
||||
zero and "a:col". This involves looking at the characters in the
|
||||
cursor line before column a:col and include those characters that
|
||||
could be part of the completed item. The text between this column and
|
||||
a:col will be replaced with the matches. Return -1 if no completion
|
||||
can be done.
|
||||
On the first invocation the arguments are:
|
||||
a:findstart 1
|
||||
a:base empty
|
||||
|
||||
When the a:findstart argument is 0 the function must return a List
|
||||
with the matching words. These matches should include the "a:base"
|
||||
text. When there are no matches return an empty List.
|
||||
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.
|
||||
|
||||
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 (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.
|
||||
|
||||
When searching for matches takes some time call |complete_add()| to
|
||||
add each match to the total list. These matches should then not
|
||||
@@ -1613,16 +1631,16 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
allow the user to press a key while still searching for matches. Stop
|
||||
searching when it returns non-zero.
|
||||
|
||||
The function must not move the cursor!
|
||||
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, col, base)
|
||||
fun! CompleteMonths(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = a:col
|
||||
let start = col('.') - 1
|
||||
while start > 0 && line[start - 1] =~ '\a'
|
||||
let start -= 1
|
||||
endwhile
|
||||
@@ -1641,11 +1659,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
set completefunc=CompleteMonths
|
||||
<
|
||||
The same, but now pretending searching for matches is slow: >
|
||||
fun! CompleteMonths(findstart, col, base)
|
||||
fun! CompleteMonths(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = a:col
|
||||
let start = col('.') - 1
|
||||
while start > 0 && line[start - 1] =~ '\a'
|
||||
let start -= 1
|
||||
endwhile
|
||||
@@ -1667,6 +1685,18 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
set completefunc=CompleteMonths
|
||||
<
|
||||
|
||||
*'completeopt'* *'cot'*
|
||||
'completeopt' 'cot' string (default: "menu")
|
||||
global
|
||||
{not in Vi}
|
||||
Options for Insert mode completion |ins-completion|.
|
||||
Currently the only supported value is:
|
||||
|
||||
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|
|
||||
|
||||
|
||||
*'confirm'* *'cf'* *'noconfirm'* *'nocf'*
|
||||
'confirm' 'cf' boolean (default off)
|
||||
global
|
||||
@@ -1789,7 +1819,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*
|
||||
@@ -1858,6 +1888,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.
|
||||
@@ -1984,9 +2019,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*cpo-\*
|
||||
\ Backslash in a [] range in a search pattern is taken
|
||||
literally, only "\]" is special See |/[]|
|
||||
'l' included: "/[ \t]" finds <Space>, '\' and 't'
|
||||
'l' excluded: "/[ \t]" finds <Space> and <Tab>
|
||||
Also see |cpo-\|.
|
||||
'\' included: "/[ \-]" finds <Space>, '\' and '-'
|
||||
'\' excluded: "/[ \-]" finds <Space> and '-'
|
||||
Also see |cpo-l|.
|
||||
*cpo-/*
|
||||
/ When "%" is used as the replacement string in a |:s|
|
||||
command, use the previous replacement string. |:s%|
|
||||
@@ -2510,7 +2545,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
|
||||
@@ -2520,7 +2557,9 @@ 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'
|
||||
When the |++enc| argument is used then the value of 'fileencodings' is
|
||||
not used.
|
||||
Note that 'fileencodings' is not used for a new file, 'fileencoding'
|
||||
is always empty then. 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
|
||||
@@ -2899,10 +2938,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
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
|
||||
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.
|
||||
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.
|
||||
|
||||
@@ -3366,7 +3406,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
|
||||
@@ -3407,6 +3449,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")
|
||||
@@ -3631,9 +3677,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 "")
|
||||
@@ -3681,7 +3732,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
|
||||
@@ -3732,9 +3783,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
- Use CTRL-O to execute one Normal mode command |i_CTRL-O|). When
|
||||
this is a mapping, it is executed as if 'insertmode' was off.
|
||||
Normal mode remains active until the mapping is finished.
|
||||
*i_CTRL-L*
|
||||
- Use CTRL-L to execute a number of Normal mode commands, then use
|
||||
<Esc> to get back to Insert mode.
|
||||
<Esc> to get back to Insert mode. Note that CTRL-L moves the cursor
|
||||
left, like <Esc> does when 'insertmode' isn't set. |i_CTRL-L|
|
||||
|
||||
These items change when 'insertmode' is set:
|
||||
- when starting to edit of a file, Vim goes to Insert mode.
|
||||
@@ -4050,7 +4101,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.
|
||||
|
||||
@@ -4284,6 +4336,45 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
generated from a list of items, e.g., the Buffers menu. Changing this
|
||||
option has no direct effect, the menu must be refreshed first.
|
||||
|
||||
*'mkspellmem'* *'msm'*
|
||||
'mkspellmem' 'msm' string (default "460000,2000,500")
|
||||
global
|
||||
{not in Vi}
|
||||
{not available when compiled without the |+syntax|
|
||||
feature}
|
||||
Parameters for |:mkspell|. This tunes when to start compressing the
|
||||
word tree. Compression can be slow when there are many words, but
|
||||
it's needed to avoid running out of memory. The amount of memory used
|
||||
per word depends very much on how similar the words are, that's why
|
||||
this tuning is complicated.
|
||||
|
||||
There are three numbers, separated by commas:
|
||||
{start},{inc},{added}
|
||||
|
||||
For most languages the uncompressed word tree fits in memory. {start}
|
||||
gives the amount of memory in Kbyte that can be used before any
|
||||
compression is done. It should be a bit smaller than the amount of
|
||||
memory that is available to Vim.
|
||||
|
||||
When going over the {start} limit the {inc} number specifies the
|
||||
amount of memory in Kbyte that can be allocated before another
|
||||
compression is done. A low number means compression is done after
|
||||
less words are added, which is slow. A high number means more memory
|
||||
will be allocated.
|
||||
|
||||
After doing compression, {added} times 1024 words can be added before
|
||||
the {inc} limit is ignored and compression is done when any extra
|
||||
amount of memory is needed. A low number means there is a smaller
|
||||
chance of hitting the {inc} limit, less memory is used but it's
|
||||
slower.
|
||||
|
||||
The languages for which these numbers are important are Italian and
|
||||
Hungarian. The default works for when you have about 512 Mbyte. If
|
||||
you have 1 Gbyte you could use: >
|
||||
:set mkspellmem=900000,3000,800
|
||||
< If you have less than 512 Mbyte |:mkspell| may fail for some
|
||||
languages, no matter what you set 'mkspellmem' to.
|
||||
|
||||
*'modeline'* *'ml'* *'nomodeline'* *'noml'*
|
||||
'modeline' 'ml' boolean (Vim default: on, Vi default: off)
|
||||
local to buffer
|
||||
@@ -4547,6 +4638,29 @@ 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.
|
||||
|
||||
*'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|
|
||||
|
||||
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*
|
||||
'osfiletype' 'oft' string (RISC-OS default: "Text",
|
||||
others default: "")
|
||||
@@ -5093,6 +5207,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'*
|
||||
@@ -5590,13 +5707,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
|
||||
@@ -5696,11 +5813,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
feature}
|
||||
Pattern to locate the end of a sentence. The following word will be
|
||||
checked to start with a capital letter. If not then it is highlighted
|
||||
with SpellCap |hl-SpellCap|.
|
||||
with SpellCap |hl-SpellCap| (unless the word is also badly spelled).
|
||||
When this check is not wanted make this option empty.
|
||||
Only used when 'spell' is set.
|
||||
Be careful with special characters, see |option-backslash| about
|
||||
including spaces and backslashes.
|
||||
To set this option automatically depending on the language, see
|
||||
|set-spc-auto|.
|
||||
|
||||
*'spellfile'* *'spf'*
|
||||
'spellfile' 'spf' string (default empty)
|
||||
@@ -5747,6 +5866,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
region by listing them: "en_us,en_ca" supports both US and Canadian
|
||||
English, but not words specific for Australia, New Zealand or Great
|
||||
Britain.
|
||||
*E757*
|
||||
As a special case the name of a .spl file can be given as-is. The
|
||||
first "_xx" in the name is removed and used as the region name
|
||||
(_xx is an underscore, two letters and followed by a non-letter).
|
||||
@@ -5757,13 +5877,18 @@ 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|.
|
||||
|
||||
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|.
|
||||
|
||||
|
||||
*'spellsuggest'* *'sps'*
|
||||
'spellsuggest' 'sps' string (default "best")
|
||||
global
|
||||
{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:
|
||||
|
||||
@@ -5782,6 +5907,11 @@ 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=|.
|
||||
Not used for |spellsuggest()|. The number of
|
||||
suggestions is never more than the value of 'lines'
|
||||
minus two.
|
||||
|
||||
file:{filename} Read file {filename}, which must have two columns,
|
||||
separated by a slash. The first column contains the
|
||||
bad word, the second column the suggested good word.
|
||||
@@ -5799,7 +5929,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.
|
||||
@@ -6203,6 +6333,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
|
||||
@@ -7229,7 +7361,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'wrapscan'* *'ws'* *'nowrapscan'* *'nows'*
|
||||
'wrapscan' 'ws' boolean (default on) *E384* *E385*
|
||||
global
|
||||
Searches wrap around the end of the file.
|
||||
Searches wrap around the end of the file. Also applies to |]s| and
|
||||
|[s|, searching for spelling mistakes.
|
||||
|
||||
*'write'* *'nowrite'*
|
||||
'write' boolean (default on)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 7.0aa. Last change: 2005 May 22
|
||||
*pattern.txt* For Vim version 7.0aa. Last change: 2005 Sep 12
|
||||
|
||||
|
||||
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|.
|
||||
@@ -943,6 +951,10 @@ x A single character, with no special meaning, matches itself
|
||||
"\_[^ab]" matches the end-of-line and any character but "a" and "b".
|
||||
This makes it Vi compatible: Without the "\_" or "\n" the collection
|
||||
does not match an end-of-line.
|
||||
*E769*
|
||||
When the ']' is not there Vim will not give an error message but
|
||||
assume no collection is used. Useful to search for '['. However, you
|
||||
do get E769 for internal searching.
|
||||
|
||||
If the sequence begins with "^", it matches any single character NOT
|
||||
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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*
|
||||
-------------
|
||||
|
||||
38
runtime/doc/pi_tar.txt
Normal file
38
runtime/doc/pi_tar.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
*tar.txt* Tar File Interface Nov 22, 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 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*
|
||||
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
|
||||
41
runtime/doc/pi_zip.txt
Normal file
41
runtime/doc/pi_zip.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
*zip.txt* Zip File Interface Nov 22, 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 and zipPlugin.vim are 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.
|
||||
|
||||
==============================================================================
|
||||
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*
|
||||
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 Jul 27
|
||||
*quickfix.txt* For Vim version 7.0aa. Last change: 2005 Sep 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -631,15 +631,13 @@ Basic items
|
||||
%% the single '%' character
|
||||
%s search text (finds a string)
|
||||
|
||||
The "%f" conversion depends on the current 'isfname' setting. "~/" is
|
||||
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. They
|
||||
should be followed by a character that cannot be in the string. Everything
|
||||
up to that character is included in the string. But when the next character
|
||||
is a '%' or a backslash, "%f" will look for any 'isfname' character and "%m"
|
||||
finds anything. If the "%f" or "%m" is at the end, everything up to the end
|
||||
of the line is included.
|
||||
The "%f" and "%m" conversions have to detect the end of the string. This
|
||||
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.
|
||||
|
||||
On MS-DOS, MS-Windows and OS/2 a leading "C:" will be included in "%f", even
|
||||
when using "%f:". This means that a file name which is a single alphabetical
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 7.0aa. Last change: 2005 Jul 27
|
||||
*quickref.txt* For Vim version 7.0aa. Last change: 2005 Dec 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -633,6 +633,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
|
||||
@@ -756,6 +757,7 @@ Short explanation of each option: *option-list*
|
||||
|'maxmempattern'| |'mmp'| maximum memory (in Kbyte) used for pattern search
|
||||
|'maxmemtot'| |'mmt'| maximum memory (in Kbyte) used for all buffers
|
||||
|'menuitems'| |'mis'| maximum number of items in a menu
|
||||
|'mkspellmem'| |'msm'| memory used before |:mkspell| compresses the tree
|
||||
|'modeline'| |'ml'| recognize modelines at start or end of file
|
||||
|'modelines'| |'mls'| number of lines checked for modelines
|
||||
|'modifiable'| |'ma'| changes to the text are not possible
|
||||
@@ -771,6 +773,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
|
||||
|'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
|
||||
|
||||
@@ -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 Jul 31
|
||||
*spell.txt* For Vim version 7.0aa. Last change: 2005 Dec 09
|
||||
|
||||
|
||||
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:
|
||||
@@ -43,6 +43,7 @@ To search for the next misspelled word:
|
||||
*]s* *E756*
|
||||
]s Move to next misspelled word after the cursor.
|
||||
A count before the command can be used to repeat.
|
||||
'wrapscan' applies.
|
||||
|
||||
*[s*
|
||||
[s Like "]s" but search backwards, find the misspelled
|
||||
@@ -59,17 +60,23 @@ 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
|
||||
name in 'spellfile'. In Visual mode the selected
|
||||
characters are added as a word (including white
|
||||
space!). If the word is explicitly marked as bad word
|
||||
in another spell file the result is unpredictable.
|
||||
A count may precede the command to indicate the entry
|
||||
in 'spellfile' to be used. A count of two uses the
|
||||
second entry.
|
||||
name in 'spellfile'. A count may precede the command
|
||||
to indicate the entry in 'spellfile' to be used. A
|
||||
count of two uses the second entry.
|
||||
|
||||
In Visual mode the selected characters are added as a
|
||||
word (including white space!).
|
||||
When the cursor is on text that is marked as badly
|
||||
spelled then the marked text is used.
|
||||
Otherwise the word under the cursor, separated by
|
||||
non-word characters, is used.
|
||||
|
||||
If the word is explicitly marked as bad word in
|
||||
another spell file the result is unpredictable.
|
||||
|
||||
*zG*
|
||||
zG Like "zg" but add the word to the internal word list
|
||||
@@ -117,41 +124,53 @@ 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.
|
||||
This may take a long time. Hit CTRL-C when you are
|
||||
This may take a long time. Hit CTRL-C when you get
|
||||
bored.
|
||||
This does not work when there is a line break halfway
|
||||
a bad word (e.g., "the the").
|
||||
You can enter the number of your choice or press
|
||||
<Enter> if you don't want to replace. You can also
|
||||
use the mouse to click on your choice (only works if
|
||||
the mouse can be used in Normal mode and when there
|
||||
are no line wraps). Click on the first (header) line
|
||||
to cancel.
|
||||
If 'verbose' is non-zero a score will be displayed to
|
||||
indicate the likeliness to the badly spelled word (the
|
||||
higher the score the more different).
|
||||
|
||||
If the command is used without a count the
|
||||
alternatives are listed and you can enter the number
|
||||
of your choice or press <Enter> if you don't want to
|
||||
replace. You can also use the mouse to click on your
|
||||
choice (only works if the mouse can be used in Normal
|
||||
mode and when there are no line wraps). Click on the
|
||||
first line (the header) to cancel.
|
||||
|
||||
If a count is used that suggestion is used, without
|
||||
prompting. For example, "1z=" always takes the first
|
||||
suggestion.
|
||||
|
||||
If 'verbose' is non-zero a score will be displayed
|
||||
with the suggestions to indicate the likeliness to the
|
||||
badly spelled word (the higher the score the more
|
||||
different).
|
||||
When a word was replaced the redo command "." will
|
||||
repeat the word replacement. This works like "ciw",
|
||||
the good word and <Esc>.
|
||||
the good word and <Esc>. This does NOT work for Thai
|
||||
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
|
||||
CTRL-X s to find suggestions. This works like Insert mode completion. Use
|
||||
CTRL-N to use the next suggestion, CTRL-P to go back. |i_CTRL-X_s|
|
||||
|
||||
The 'spellsuggest' option influences how the list of suggestions is generated
|
||||
and sorted. See |'spellsuggest'|.
|
||||
|
||||
The 'spellcapcheck' option is used to check the first word of a sentence
|
||||
starts with a capital. This doesn't work for the first word in the file.
|
||||
When there is a line break right after a sentence the highlighting of the next
|
||||
line may be postponed. Use |CTRL-L| when needed.
|
||||
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.
|
||||
|
||||
==============================================================================
|
||||
2. Remarks on spell checking *spell-remarks*
|
||||
@@ -187,9 +206,34 @@ 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*
|
||||
Specific exception: For German these special regions are used:
|
||||
de all German words accepted
|
||||
de_de old and new spelling
|
||||
de_19 old spelling
|
||||
de_20 new spelling
|
||||
de_at Austria
|
||||
de_ch Switzerland
|
||||
|
||||
*spell-russian*
|
||||
Specific exception: For Russian these special regions are used:
|
||||
ru all Russian words accepted
|
||||
ru_ru "IE" letter spelling
|
||||
ru_yo "YO" letter spelling
|
||||
|
||||
*spell-yiddish*
|
||||
Yiddish requires using "utf-8" encoding, because of the special characters
|
||||
used. If you are using latin1 Vim will use transliterated (romanized) Yiddish
|
||||
instead. If you want to use transliterated Yiddish with utf-8 use "yi-tr".
|
||||
In a table:
|
||||
'encoding' 'spelllang'
|
||||
utf-8 yi Yiddish
|
||||
latin1 yi transliterated Yiddish
|
||||
utf-8 yi-tr transliterated Yiddish
|
||||
|
||||
|
||||
SPELL FILES *spell-load*
|
||||
|
||||
@@ -315,6 +359,42 @@ find these functions useful:
|
||||
spellsuggest() get list of spelling suggestions
|
||||
soundfold() get the sound-a-like version of a word
|
||||
|
||||
|
||||
SETTING 'spellcapcheck' AUTOMATICALLY *set-spc-auto*
|
||||
|
||||
After the 'spelllang' 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. This can be used to set options
|
||||
specifically for the language, especially 'spellcapcheck'.
|
||||
|
||||
The distribution includes a few of these files. Use this command to see what
|
||||
they do: >
|
||||
:next $VIMRUNTIME/spell/*.vim
|
||||
|
||||
Note that the default scripts don't set 'spellcapcheck' if it was changed from
|
||||
the default value. This assumes the user prefers another value then.
|
||||
|
||||
|
||||
DOUBLE SCORING *spell-double-scoring*
|
||||
|
||||
The 'spellsuggest' option can be used to select "double" scoring. This
|
||||
mechanism is based on the principle that there are two kinds of spelling
|
||||
mistakes:
|
||||
|
||||
1. You know how to spell the word, but mistype something. This results in a
|
||||
small editing distance (character swapped/omitted/inserted) and possibly a
|
||||
word that sounds completely different.
|
||||
|
||||
2. You don't know how to spell the word and type something that sounds right.
|
||||
The edit distance can be big but the word is similar after sound-folding.
|
||||
|
||||
Since scores for these two mistakes will be very different we use a list
|
||||
for each and mix them.
|
||||
|
||||
The sound-folding is slow and people that know the language won't make the
|
||||
second kind of mistakes. Therefore 'spellsuggest' can be set to select the
|
||||
preferred method for scoring the suggestions.
|
||||
|
||||
==============================================================================
|
||||
3. Generating a spell file *spell-mkspell*
|
||||
|
||||
@@ -341,7 +421,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
|
||||
@@ -369,12 +449,15 @@ then Vim will try to guess.
|
||||
into one en.spl file.
|
||||
Up to eight regions can be combined. *E754* *755*
|
||||
The REP and SAL items of the first .aff file where
|
||||
they appear are used. |spell-affix-REP|
|
||||
|spell-affix-SAL|
|
||||
they appear are used. |spell-REP| |spell-SAL|
|
||||
|
||||
This command uses a lot of memory, required to find
|
||||
the optimal word tree (Polish requires a few hundred
|
||||
Mbyte). The final result will be much smaller.
|
||||
the optimal word tree (Polish, Italian and Hungarian
|
||||
require several hundred Mbyte). The final result will
|
||||
be much smaller, because compression is used. To
|
||||
avoid running out of memory compression will be done
|
||||
now and then. This can be tuned with the 'mkspellmem'
|
||||
option.
|
||||
|
||||
After the spell file was written and it was being used
|
||||
in a buffer it will be reloaded automatically.
|
||||
@@ -389,6 +472,12 @@ then Vim will try to guess.
|
||||
and producing an output file in the same directory
|
||||
that has ".{enc}.spl" appended.
|
||||
|
||||
Vim will report the number of duplicate words. This might be a mistake in the
|
||||
list of words. But sometimes it is used to have different prefixes and
|
||||
suffixes for the same basic word to avoid them combining (e.g. Czech uses
|
||||
this). If you want Vim to report all duplicate words set the 'verbose'
|
||||
option.
|
||||
|
||||
Since you might want to change a Myspell word list for use with Vim the
|
||||
following procedure is recommended:
|
||||
|
||||
@@ -412,6 +501,25 @@ When the Myspell files are updated you can merge the differences:
|
||||
4. Rename xx_YY.new.dic to xx_YY.orig.dic and xx_YY.new.aff to xx_YY.new.aff.
|
||||
|
||||
|
||||
SPELL FILE VERSIONS *E770* *E771* *E772*
|
||||
|
||||
Spell checking is a relatively new feature in Vim, thus it's possible that the
|
||||
.spl file format will be changed to support more languages. Vim will check
|
||||
the validity of the spell file and report anything wrong.
|
||||
|
||||
E771: Old spell file, needs to be updated ~
|
||||
This spell file is older than your Vim. You need to update the .spl file.
|
||||
|
||||
E772: Spell file is for newer version of Vim ~
|
||||
This means the spell file was made for a later version of Vim. You need to
|
||||
update Vim.
|
||||
|
||||
E770: Unsupported section in spell file ~
|
||||
This means the spell file was made for a later version of Vim and contains a
|
||||
section that is required for the spell file to work. In this case it's
|
||||
probably a good idea to upgrade your Vim.
|
||||
|
||||
|
||||
SPELL FILE DUMP
|
||||
|
||||
If for some reason you want to check what words are supported by the currently
|
||||
@@ -419,7 +527,7 @@ used spelling files, use this command:
|
||||
|
||||
*:spelldump* *:spelld*
|
||||
:spelld[ump] Open a new window and fill it with all currently valid
|
||||
words.
|
||||
words. Compound words are not included.
|
||||
Note: For some languages the result may be enormous,
|
||||
causing Vim to run out of memory.
|
||||
|
||||
@@ -442,10 +550,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
|
||||
@@ -507,15 +615,6 @@ 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 format for the affix and word list files is mostly identical to what
|
||||
Myspell uses (the spell checker of Mozilla and OpenOffice.org). A description
|
||||
can be found here:
|
||||
http://lingucomponent.openoffice.org/affix.readme ~
|
||||
Note that affixes are case sensitive, this isn't obvious from the description.
|
||||
|
||||
Vim supports a few extras. Hopefully Myspell will support these too some day.
|
||||
See |spell-affix-vim|.
|
||||
|
||||
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).
|
||||
@@ -525,6 +624,19 @@ 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
|
||||
"src/spell" directory.
|
||||
|
||||
The format for the affix and word list files is based on what Myspell uses
|
||||
(the spell checker of Mozilla and OpenOffice.org). A description can be found
|
||||
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.
|
||||
|
||||
|
||||
WORD LIST FORMAT *spell-dic-format*
|
||||
|
||||
@@ -540,12 +652,17 @@ A very short example, with line numbers:
|
||||
8 bedel/P
|
||||
9 kado/1
|
||||
10 cadeau/2
|
||||
11 TCP,IP
|
||||
|
||||
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. 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|.
|
||||
|
||||
When the word only has lower-case letters it will also match with the word
|
||||
starting with an upper-case letter.
|
||||
@@ -564,17 +681,17 @@ The word with all upper-case characters will always be OK.
|
||||
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-affix-KEP|.
|
||||
only, see below |spell-KEP|.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
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".
|
||||
|
||||
*spell-affix-vim*
|
||||
A flag that Vim adds and is not in Myspell is the flag defined with KEP in the
|
||||
@@ -606,8 +723,8 @@ 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.
|
||||
|
||||
*E761* *E762* *spell-affix-FOL*
|
||||
*spell-affix-LOW* *spell-affix-UPP*
|
||||
*E761* *E762* *spell-FOL*
|
||||
*spell-LOW* *spell-UPP*
|
||||
Three lines in the affix file are needed. Simplistic example:
|
||||
|
||||
FOL <20><><EFBFBD> ~
|
||||
@@ -627,6 +744,10 @@ The "UPP" line specifies the characters with upper-case. That is, a character
|
||||
is upper-case where it's different from the character at the same position in
|
||||
"FOL".
|
||||
|
||||
An exception is made for the German sharp s <20>. The upper-case version is
|
||||
"SS". In the FOL/LOW/UPP lines it should be included, so that it's recognized
|
||||
as a word character, but use the <20> character in all three.
|
||||
|
||||
ASCII characters should be omitted, Vim always handles these in the same way.
|
||||
When the encoding is UTF-8 no word characters need to be specified.
|
||||
|
||||
@@ -658,8 +779,31 @@ These characters are defined with MIDWORD in the .aff file:
|
||||
MIDWORD '- ~
|
||||
|
||||
|
||||
FLAG TYPES *spell-FLAG*
|
||||
|
||||
Flags are used to specify the affixes that can be used with a word and for
|
||||
other properties of the word. Normally single-character flags are used. This
|
||||
limits the number of possible flags, especially for 8-bit encodings. The FLAG
|
||||
item can be used if more affixes are to be used. Possible values:
|
||||
|
||||
FLAG long use two-character flags
|
||||
FLAG num use numbers, from 1 up to 65000
|
||||
FLAG caplong use one-character flags without A-Z and two-character
|
||||
flags that start with A-Z
|
||||
|
||||
With "FLAG num" the numbers in a list of affixes need to be separated with a
|
||||
comma: "234,2143,1435". This method is inefficient, but useful if the file is
|
||||
generated with a program.
|
||||
|
||||
When using "caplong" the two-character flags all start with a capital: "Aa",
|
||||
"B1", "BB", etc. This is useful to use one-character flags for the most
|
||||
common items and two-character flags for uncommon items.
|
||||
|
||||
Note: When using utf-8 only characters up to 65000 may be used for flags.
|
||||
|
||||
|
||||
AFFIXES
|
||||
*spell-affix-PFX* *spell-affix-SFX*
|
||||
*spell-PFX* *spell-SFX*
|
||||
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).
|
||||
@@ -671,6 +815,18 @@ Example:
|
||||
SFX F 0 in [^i]n # Spion > Spionin ~
|
||||
SFX F 0 nen in # Bauerin > Bauerinnen ~
|
||||
|
||||
Apparently Myspell allows an affix name to appear more than once. Since this
|
||||
might also be a mistake, Vim checks for an extra "S". The affix files for
|
||||
Myspell that use this feature apparently have this flag. Example:
|
||||
|
||||
SFX a Y 1 S ~
|
||||
SFX a 0 an . ~
|
||||
|
||||
SFX a Y 2 S ~
|
||||
SFX a 0 en . ~
|
||||
SFX a 0 on . ~
|
||||
|
||||
*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:
|
||||
@@ -681,7 +837,23 @@ marked as rare words. Example:
|
||||
However, if the word also appears as a good word in another way it won't be
|
||||
marked as rare.
|
||||
|
||||
*spell-affix-PFXPOSTPONE*
|
||||
*spell-affix-nocomp*
|
||||
Another extra item for Vim is the "nocomp" flag. It must come after the other
|
||||
fields, before a comment. It can be either before or after "rare". When
|
||||
present then all words that use the affix will not be part of a compound word.
|
||||
Example:
|
||||
affix file:
|
||||
COMPOUNDFLAG c ~
|
||||
SFX a Y 2 ~
|
||||
SFX a 0 s . ~
|
||||
SFX a 0 ize . nocomp ~
|
||||
dictionary:
|
||||
word/c ~
|
||||
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
|
||||
possible to build the whole word list in memory. This applies to Hebrew (a
|
||||
list with all words is over a Gbyte). In that case applying prefixes must be
|
||||
@@ -697,8 +869,23 @@ but in lower case. Thus when the chop string is used to allow the following
|
||||
word to start with an upper case letter.
|
||||
|
||||
|
||||
KEEP-CASE WORDS
|
||||
*spell-affix-KEP*
|
||||
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.
|
||||
|
||||
|
||||
KEEP-CASE WORDS *spell-KEP*
|
||||
|
||||
In the affix file a KEP line can be used to define the affix name used for
|
||||
keep-case words. Example:
|
||||
|
||||
@@ -707,8 +894,8 @@ keep-case words. Example:
|
||||
See above for an example |spell-affix-vim|.
|
||||
|
||||
|
||||
RARE WORDS
|
||||
*spell-affix-RAR*
|
||||
RARE WORDS *spell-RAR*
|
||||
|
||||
In the affix file a RAR line can be used to define the affix name used for
|
||||
rare words. Example:
|
||||
|
||||
@@ -720,8 +907,8 @@ a typing mistake anyway. When the same word is found as good it won't be
|
||||
highlighted as rare.
|
||||
|
||||
|
||||
BAD WORDS
|
||||
*spell-affix-BAD*
|
||||
BAD WORDS *spell-BAD*
|
||||
|
||||
In the affix file a BAD line can be used to define the affix name used for
|
||||
bad words. Example:
|
||||
|
||||
@@ -735,8 +922,190 @@ 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.
|
||||
|
||||
*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:
|
||||
|
||||
REPLACEMENTS *spell-affix-REP*
|
||||
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*
|
||||
|
||||
A compound word is a longer word made by concatenating words that appear in
|
||||
the .dic file. To specify which words may be concatenated a character is
|
||||
used. This character is put in the list of affixes after the word. We will
|
||||
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
|
||||
over which word comes first. Example:
|
||||
COMPOUNDFLAG c ~
|
||||
|
||||
*spell-COMPOUNDFLAGS*
|
||||
A more advanced method to specify how compound words can be formed uses
|
||||
multiple items with multiple flags. This is not compatible with Myspell 3.0.
|
||||
Let's start with an example:
|
||||
COMPOUNDFLAGS c+ ~
|
||||
COMPOUNDFLAGS se ~
|
||||
|
||||
The first line defines that words with the "c" flag can be concatenated in any
|
||||
order. The second line defines compound words that are made of one word with
|
||||
the "s" flag and one word with the "e" flag. With this dictionary:
|
||||
bork/c ~
|
||||
onion/s ~
|
||||
soup/e ~
|
||||
|
||||
You can make these words:
|
||||
bork
|
||||
borkbork
|
||||
borkborkbork
|
||||
(etc.)
|
||||
onion
|
||||
soup
|
||||
onionsoup
|
||||
|
||||
The COMPOUNDFLAGS item may appear multiple times. The argument is made out of
|
||||
one or more groups, where each group can be:
|
||||
one flag e.g., c
|
||||
alternate flags inside [] e.g., [abc]
|
||||
Optionally this may be followed by:
|
||||
* the group appears zero or more times, e.g., sm*e
|
||||
+ the group appears one or more times, e.g., c+
|
||||
|
||||
This is similar to the regexp pattern syntax (but not the same!). A few
|
||||
examples with the sequence of word flags they require:
|
||||
COMPOUNDFLAGS x+ x xx xxx etc.
|
||||
COMPOUNDFLAGS yz yz
|
||||
COMPOUNDFLAGS x+z xz xxz xxxz etc.
|
||||
COMPOUNDFLAGS yx+ yx yxx yxxx etc.
|
||||
|
||||
COMPOUNDFLAGS [abc]z az bz cz
|
||||
COMPOUNDFLAGS [abc]+z az aaz abaz bz baz bcbz cz caz cbaz etc.
|
||||
COMPOUNDFLAGS a[xyz]+ ax axx axyz ay ayx ayzz az azy azxy etc.
|
||||
COMPOUNDFLAGS sm*e se sme smme smmme etc.
|
||||
COMPOUNDFLAGS s[xyz]*e se sxe sxye sxyxe sye syze sze szye szyxe etc.
|
||||
|
||||
A specific example: Allow a compound to be made of two words and a dash:
|
||||
In the .aff file:
|
||||
COMPOUNDFLAGS sde ~
|
||||
NEEDAFFIX x ~
|
||||
COMPOUNDMAX 3 ~
|
||||
COMPOUNDMIN 1 ~
|
||||
In the .dic file:
|
||||
start/s ~
|
||||
end/e ~
|
||||
-/xd ~
|
||||
|
||||
This allows for the word "start-end", but not "startend".
|
||||
|
||||
*spell-COMPOUNDMIN*
|
||||
The minimal character length of a word used for compounding is specified with
|
||||
COMPOUNDMIN. Example:
|
||||
COMPOUNDMIN 5 ~
|
||||
|
||||
When omitted there is no minimal length. Obviously you could just leave out
|
||||
the compound flag from short words instead, this feature is present for
|
||||
compatibility with Myspell.
|
||||
|
||||
*spell-COMPOUNDMAX*
|
||||
The maximum number of words that can be concatenated into a compound word is
|
||||
specified with COMPOUNDMAX. Example:
|
||||
COMPOUNDMAX 3 ~
|
||||
|
||||
When omitted there is no maximum. It applies to all compound words.
|
||||
|
||||
To set a limit for words with specific flags make sure the items in
|
||||
COMPOUNDFLAGS where they appear don't allow too many words.
|
||||
|
||||
*spell-COMPOUNDSYLMAX*
|
||||
The maximum number of syllables that a compound word may contain is specified
|
||||
with COMPOUNDSYLMAX. Example:
|
||||
COMPOUNDSYLMAX 6 ~
|
||||
|
||||
This has no effect if there is no SYLLABLE item. Without COMPOUNDSYLMAX there
|
||||
is no limit on the number of syllables.
|
||||
|
||||
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-SYLLABLE*
|
||||
The SYLLABLE item defines characters or character sequences that are used to
|
||||
count the number of syllables in a word. Example:
|
||||
SYLLABLE a<>e<EFBFBD>i<EFBFBD>o<EFBFBD><6F><EFBFBD>u<EFBFBD><75><EFBFBD>y/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui ~
|
||||
|
||||
Before the first slash is the set of characters that are counted for one
|
||||
syllable, also when repeated and mixed, until the next character that is not
|
||||
in this set. After the slash come sequences of characters that are counted
|
||||
for one syllable. These are preferred over using characters from the set.
|
||||
With the example "ideeen" has three syllables, counted by "i", "ee" and "e".
|
||||
|
||||
Only case-folded letters need to be included.
|
||||
|
||||
Above another way to restrict compounding was mentioned above: adding "nocomp"
|
||||
after an affix causes all words that are made with that affix not be be used
|
||||
for compounding. |spell-affix-nocomp|
|
||||
|
||||
|
||||
UNLIMITED COMPOUNDING *spell-NOBREAK*
|
||||
|
||||
For some languages, such as Thai, there is no space in between words. This
|
||||
looks like all words are compounded. To specify this use the NOBREAK item in
|
||||
the affix file, without arguments:
|
||||
NOBREAK ~
|
||||
|
||||
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 . .
|
||||
>
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
|
||||
REPLACEMENTS *spell-REP*
|
||||
|
||||
In the affix file REP items can be used to define common mistakes. This is
|
||||
used to make spelling suggestions. The items define the "from" text and the
|
||||
@@ -748,13 +1117,19 @@ used to make spelling suggestions. The items define the "from" text and the
|
||||
REP k ch ~
|
||||
REP ch k ~
|
||||
|
||||
The first line specifies the number of REP lines following. Vim ignores it.
|
||||
The first line specifies the number of REP lines following. Vim ignores the
|
||||
number, but it must be there.
|
||||
|
||||
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-affix-MAP*
|
||||
REP the_the the ~
|
||||
|
||||
|
||||
SIMILAR CHARACTERS *spell-MAP*
|
||||
|
||||
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
|
||||
@@ -764,13 +1139,14 @@ to prefer suggestions with these letters substituted. Example:
|
||||
MAP e<><65><EFBFBD><EFBFBD> ~
|
||||
MAP u<><75><EFBFBD><EFBFBD> ~
|
||||
|
||||
The first line specifies the number of MAP lines following. Vim ignores it.
|
||||
The first line specifies the number of MAP lines following. Vim ignores the
|
||||
number, but the line must be there.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
SOUND-A-LIKE *spell-affix-SAL*
|
||||
SOUND-A-LIKE *spell-SAL*
|
||||
|
||||
In the affix file SAL items can be used to define the sounds-a-like mechanism
|
||||
to be used. The main items define the "from" text and the "to" replacement.
|
||||
@@ -794,7 +1170,7 @@ There are a few special items:
|
||||
"1" has the same meaning as "true". Any other value means "false".
|
||||
|
||||
|
||||
SIMPLE SOUNDFOLDING *spell-affix-SOFOFROM* *spell-affix-SOFOTO*
|
||||
SIMPLE SOUNDFOLDING *spell-SOFOFROM* *spell-SOFOTO*
|
||||
|
||||
The SAL mechanism is complex and slow. A simpler mechanism is mapping all
|
||||
characters to another character, mapping similar sounding characters to the
|
||||
@@ -818,7 +1194,7 @@ 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.
|
||||
|
||||
|
||||
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: 2005 Dec 04
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -789,10 +789,11 @@ 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.
|
||||
@@ -1200,6 +1201,13 @@ 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.
|
||||
|
||||
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 Jul 29
|
||||
*syntax.txt* For Vim version 7.0aa. Last change: 2005 Nov 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -399,7 +399,7 @@ Go back to the default to use 'number' by deleting the variable: >
|
||||
:unlet html_number_lines
|
||||
|
||||
Closed folds are put in the HTML as they are displayed. If you don't want
|
||||
this, use the "zR" command before invoking 2html, or use: >
|
||||
this, use the |zR| command before invoking 2html, or use: >
|
||||
:let html_ignore_folding = 1
|
||||
|
||||
By default, HTML optimized for old browsers is generated. If you prefer using
|
||||
@@ -426,16 +426,13 @@ To go back to the automatic mechanism, delete the g:html_use_encoding
|
||||
variable: >
|
||||
:unlet html_use_encoding
|
||||
<
|
||||
Closed folds are kept as they are displayed. If you don't want closed folds
|
||||
in the HTML use the |zR| command before converting.
|
||||
|
||||
For diff mode a sequence of more than 3 filler lines is displayed as three
|
||||
lines with the middle line mentioning the total number of inserted lines. If
|
||||
you prefer to see all the inserted lines use: >
|
||||
:let html_whole_filler = 1
|
||||
And to go back to displaying up to three lines again: >
|
||||
:unlet html_whole_filler
|
||||
|
||||
<
|
||||
*convert-to-XML* *convert-to-XHTML*
|
||||
An alternative is to have the script generate XHTML (XML compliant HTML). To
|
||||
do this set the "use_xhtml" variable: >
|
||||
@@ -457,7 +454,7 @@ Unix shell: >
|
||||
for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done
|
||||
<
|
||||
|
||||
ABEL *abel.vim* *abel-syntax*
|
||||
ABEL *abel.vim* *ft-abel-syntax*
|
||||
|
||||
ABEL highlighting provides some user-defined options. To enable them, assign
|
||||
any value to the respective variable. Example: >
|
||||
@@ -470,7 +467,7 @@ abel_obsolete_ok obsolete keywords are statements, not errors
|
||||
abel_cpp_comments_illegal do not interpret '//' as inline comment leader
|
||||
|
||||
|
||||
ADA *ada.vim* *ada-syntax*
|
||||
ADA *ada.vim* *ft-ada-syntax*
|
||||
|
||||
This mode is designed for the 1995 edition of Ada ("Ada95"), which
|
||||
includes support for objected-programming, protected types, and so on.
|
||||
@@ -518,7 +515,7 @@ Even on a slow (90Mhz) PC this mode works quickly, but if you find
|
||||
the performance unacceptable, turn on ada_withuse_ordinary.
|
||||
|
||||
|
||||
ANT *ant.vim* *ant-syntax*
|
||||
ANT *ant.vim* *ft-ant-syntax*
|
||||
|
||||
The ant syntax file provides syntax highlighting for javascript and python
|
||||
by default. Syntax highlighting for other script languages can be installed
|
||||
@@ -536,7 +533,7 @@ will install syntax perl highlighting for the following ant code >
|
||||
See |mysyntaxfile-add| for installing script languages permanently.
|
||||
|
||||
|
||||
APACHE *apache.vim* *apache-syntax*
|
||||
APACHE *apache.vim* *ft-apache-syntax*
|
||||
|
||||
The apache syntax file provides syntax highlighting depending on Apache HTTP
|
||||
server version, by default for 1.3.x. Set "apache_version" to Apache version
|
||||
@@ -546,8 +543,8 @@ server version, by default for 1.3.x. Set "apache_version" to Apache version
|
||||
<
|
||||
|
||||
*asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k*
|
||||
ASSEMBLY *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax*
|
||||
*asm68k-syntax* *fasm.vim*
|
||||
ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax*
|
||||
*ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim*
|
||||
|
||||
Files matching "*.i" could be Progress or Assembly. If the automatic detection
|
||||
doesn't work for you, or you don't edit Progress at all, use this in your
|
||||
@@ -601,7 +598,7 @@ nasm_ctx_outside_macro contexts outside macro not as Error
|
||||
nasm_no_warn potentially risky syntax not as ToDo
|
||||
|
||||
|
||||
ASPPERL and ASPVBS *aspperl-syntax* *aspvbs-syntax*
|
||||
ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax*
|
||||
|
||||
*.asp and *.asa files could be either Perl or Visual Basic script. Since it's
|
||||
hard to detect this you can set two global variables to tell Vim what you are
|
||||
@@ -613,7 +610,7 @@ For Visual Basic use: >
|
||||
:let g:filetype_asp = "aspvbs"
|
||||
|
||||
|
||||
BASIC *basic.vim* *vb.vim* *basic-syntax* *vb-syntax*
|
||||
BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax*
|
||||
|
||||
Both Visual Basic and "normal" basic use the extension ".bas". To detect
|
||||
which one should be used, Vim checks for the string "VB_Name" in the first
|
||||
@@ -622,7 +619,7 @@ otherwise "vb". Files with the ".frm" extension will always be seen as Visual
|
||||
Basic.
|
||||
|
||||
|
||||
C *c.vim* *c-syntax*
|
||||
C *c.vim* *ft-c-syntax*
|
||||
|
||||
A few things in C highlighting are optional. To enable them assign any value
|
||||
to the respective variable. Example: >
|
||||
@@ -689,7 +686,7 @@ an the "after" directory in 'runtimepath'. For Unix this would be
|
||||
syn sync fromstart
|
||||
set foldmethod=syntax
|
||||
|
||||
CH *ch.vim* *ch-syntax*
|
||||
CH *ch.vim* *ft-ch-syntax*
|
||||
|
||||
C/C++ interpreter. Ch has similar syntax highlighting to C and builds upon
|
||||
the C syntax file. See |c.vim| for all the settings that are available for C.
|
||||
@@ -699,7 +696,7 @@ of C or C++: >
|
||||
:let ch_syntax_for_h = 1
|
||||
|
||||
|
||||
CHILL *chill.vim* *chill-syntax*
|
||||
CHILL *chill.vim* *ft-chill-syntax*
|
||||
|
||||
Chill syntax highlighting is similar to C. See |c.vim| for all the settings
|
||||
that are available. Additionally there is:
|
||||
@@ -709,7 +706,7 @@ chill_comment_string like c_comment_strings
|
||||
chill_minlines like c_minlines
|
||||
|
||||
|
||||
CHANGELOG *changelog.vim* *changelog-syntax*
|
||||
CHANGELOG *changelog.vim* *ft-changelog-syntax*
|
||||
|
||||
ChangeLog supports highlighting spaces at the start of a line.
|
||||
If you do not like this, add following line to your .vimrc: >
|
||||
@@ -725,7 +722,7 @@ Or to avoid the highlighting: >
|
||||
This works immediately.
|
||||
|
||||
|
||||
COBOL *cobol.vim* *cobol-syntax*
|
||||
COBOL *cobol.vim* *ft-cobol-syntax*
|
||||
|
||||
COBOL highlighting has different needs for legacy code than it does for fresh
|
||||
development. This is due to differences in what is being done (maintenance
|
||||
@@ -736,7 +733,7 @@ To disable it again, use this: >
|
||||
:unlet cobol_legacy_code
|
||||
|
||||
|
||||
COLD FUSION *coldfusion.vim* *coldfusion-syntax*
|
||||
COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax*
|
||||
|
||||
The ColdFusion has its own version of HTML comments. To turn on ColdFusion
|
||||
comment highlighting, add the following line to your startup file: >
|
||||
@@ -746,7 +743,7 @@ comment highlighting, add the following line to your startup file: >
|
||||
The ColdFusion syntax file is based on the HTML syntax file.
|
||||
|
||||
|
||||
CSH *csh.vim* *csh-syntax*
|
||||
CSH *csh.vim* *ft-csh-syntax*
|
||||
|
||||
This covers the shell named "csh". Note that on some systems tcsh is actually
|
||||
used.
|
||||
@@ -769,7 +766,7 @@ will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the
|
||||
variable.
|
||||
|
||||
|
||||
CYNLIB *cynlib.vim* *cynlib-syntax*
|
||||
CYNLIB *cynlib.vim* *ft-cynlib-syntax*
|
||||
|
||||
Cynlib files are C++ files that use the Cynlib class library to enable
|
||||
hardware modelling and simulation using C++. Typically Cynlib files have a .cc
|
||||
@@ -789,7 +786,7 @@ To disable these again, use this: >
|
||||
:unlet cynlib_cyntax_for_cpp
|
||||
<
|
||||
|
||||
CWEB *cweb.vim* *cweb-syntax*
|
||||
CWEB *cweb.vim* *ft-cweb-syntax*
|
||||
|
||||
Files matching "*.w" could be Progress or cweb. If the automatic detection
|
||||
doesn't work for you, or you don't edit Progress at all, use this in your
|
||||
@@ -797,7 +794,7 @@ startup vimrc: >
|
||||
:let filetype_w = "cweb"
|
||||
|
||||
|
||||
DESKTOP *desktop.vim* *desktop-syntax*
|
||||
DESKTOP *desktop.vim* *ft-desktop-syntax*
|
||||
|
||||
Primary goal of this syntax file is to highlight .desktop and .directory files
|
||||
according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/
|
||||
@@ -807,7 +804,7 @@ to standard by placing this in your vimrc file: >
|
||||
:let enforce_freedesktop_standard = 1
|
||||
|
||||
|
||||
DIRCOLORS *dircolors.vim* *dircolors-syntax*
|
||||
DIRCOLORS *dircolors.vim* *ft-dircolors-syntax*
|
||||
|
||||
The dircolors utility highlighting definition has one option. It exists to
|
||||
provide compatibility with the Slackware GNU/Linux distributions version of
|
||||
@@ -818,9 +815,9 @@ line to your startup file: >
|
||||
let dircolors_is_slackware = 1
|
||||
|
||||
|
||||
DOCBOOK *docbk.vim* *docbk-syntax* *docbook*
|
||||
DOCBOOK XML *docbkxml.vim* *docbkxml-syntax*
|
||||
DOCBOOK SGML *docbksgml.vim* *docbksgml-syntax*
|
||||
DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook*
|
||||
DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax*
|
||||
DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax*
|
||||
|
||||
There are two types of DocBook files: SGML and XML. To specify what type you
|
||||
are using the "b:docbk_type" variable should be set. Vim does this for you
|
||||
@@ -837,7 +834,7 @@ or: >
|
||||
:set filetype=docbkxml
|
||||
|
||||
|
||||
DOSBATCH *dosbatch.vim* *dosbatch-syntax*
|
||||
DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax*
|
||||
|
||||
There is one option with highlighting DOS batch files. This covers new
|
||||
extensions to the Command Interpreter introduced with Windows 2000 and
|
||||
@@ -860,7 +857,7 @@ If this variable is undefined or zero, btm syntax is selected.
|
||||
|
||||
|
||||
|
||||
DTD *dtd.vim* *dtd-syntax*
|
||||
DTD *dtd.vim* *ft-dtd-syntax*
|
||||
|
||||
The DTD syntax highlighting is case sensitive by default. To disable
|
||||
case-sensitive highlighting, add the following line to your startup file: >
|
||||
@@ -884,7 +881,7 @@ delimiters % and ;. This can be turned off by setting: >
|
||||
The DTD syntax file is also included by xml.vim to highlight included dtd's.
|
||||
|
||||
|
||||
EIFFEL *eiffel.vim* *eiffel-syntax*
|
||||
EIFFEL *eiffel.vim* *ft-eiffel-syntax*
|
||||
|
||||
While Eiffel is not case-sensitive, its style guidelines are, and the
|
||||
syntax highlighting file encourages their use. This also allows to
|
||||
@@ -927,7 +924,7 @@ Finally, some vendors support hexadecimal constants. To handle them, add >
|
||||
to your startup file.
|
||||
|
||||
|
||||
ERLANG *erlang.vim* *erlang-syntax*
|
||||
ERLANG *erlang.vim* *ft-erlang-syntax*
|
||||
|
||||
The erlang highlighting supports Erlang (ERicsson LANGuage).
|
||||
Erlang is case sensitive and default extension is ".erl".
|
||||
@@ -942,7 +939,7 @@ your .vimrc: >
|
||||
:let erlang_characters = 1
|
||||
|
||||
|
||||
FORM *form.vim* *form-syntax*
|
||||
FORM *form.vim* *ft-form-syntax*
|
||||
|
||||
The coloring scheme for syntax elements in the FORM file uses the default
|
||||
modes Conditional, Number, Statement, Comment, PreProc, Type, and String,
|
||||
@@ -976,7 +973,7 @@ gvim display. Here, statements are colored LightYellow instead of Yellow, and
|
||||
conditionals are LightBlue for better distinction.
|
||||
|
||||
|
||||
FORTRAN *fortran.vim* *fortran-syntax*
|
||||
FORTRAN *fortran.vim* *ft-fortran-syntax*
|
||||
|
||||
Default highlighting and dialect ~
|
||||
Highlighting appropriate for f95 (Fortran 95) is used by default. This choice
|
||||
@@ -1117,11 +1114,11 @@ Parenthesis checking does not catch too few closing parentheses. Hollerith
|
||||
strings are not recognized. Some keywords may be highlighted incorrectly
|
||||
because Fortran90 has no reserved words.
|
||||
|
||||
For further information related to fortran, see |fortran-indent| and
|
||||
|fortran-plugin|.
|
||||
For further information related to fortran, see |ft-fortran-indent| and
|
||||
|ft-fortran-plugin|.
|
||||
|
||||
|
||||
FVWM CONFIGURATION FILES *fvwm.vim* *fvwm-syntax*
|
||||
FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax*
|
||||
|
||||
In order for Vim to recognize Fvwm configuration files that do not match
|
||||
the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns
|
||||
@@ -1145,7 +1142,7 @@ in /usr/X11/lib/X11/, you should add the line >
|
||||
to your .vimrc file.
|
||||
|
||||
|
||||
GSP *gsp.vim*
|
||||
GSP *gsp.vim* *ft-gsp-syntax*
|
||||
|
||||
The default coloring style for GSP pages is defined by |html.vim|, and
|
||||
the coloring for java code (within java tags or inline between backticks)
|
||||
@@ -1168,7 +1165,7 @@ The backticks for inline java are highlighted according to the htmlError
|
||||
group to make them easier to see.
|
||||
|
||||
|
||||
GROFF *groff.vim* *groff-syntax*
|
||||
GROFF *groff.vim* *ft-groff-syntax*
|
||||
|
||||
The groff syntax file is a wrapper for |nroff.vim|, see the notes
|
||||
under that heading for examples of use and configuration. The purpose
|
||||
@@ -1177,7 +1174,7 @@ filetype from a |modeline| or in a personal filetype definitions file
|
||||
(see |filetype.txt|).
|
||||
|
||||
|
||||
HASKELL *haskell.vim* *lhaskell.vim* *haskell-syntax*
|
||||
HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax*
|
||||
|
||||
The Haskell syntax files support plain Haskell code as well as literate
|
||||
Haskell code, the latter in both Bird style and TeX style. The Haskell
|
||||
@@ -1221,7 +1218,7 @@ set before turning syntax highlighting on for the buffer or
|
||||
loading a file.
|
||||
|
||||
|
||||
HTML *html.vim* *html-syntax*
|
||||
HTML *html.vim* *ft-html-syntax*
|
||||
|
||||
The coloring scheme for tags in the HTML file works as follows.
|
||||
|
||||
@@ -1294,7 +1291,7 @@ Now you just need to make sure that you add all regions that contain
|
||||
the preprocessor language to the cluster htmlPreproc.
|
||||
|
||||
|
||||
HTML/OS (by Aestiva) *htmlos.vim* *htmlos-syntax*
|
||||
HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax*
|
||||
|
||||
The coloring scheme for HTML/OS works as follows:
|
||||
|
||||
@@ -1315,7 +1312,7 @@ Lastly, it should be noted that the opening and closing characters to begin a
|
||||
block of HTML/OS code can either be << or [[ and >> or ]], respectively.
|
||||
|
||||
|
||||
IA64 *ia64.vim* *intel-itanium* *ia64-syntax*
|
||||
IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax*
|
||||
|
||||
Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for
|
||||
how to recognize this filetype.
|
||||
@@ -1324,7 +1321,7 @@ To have *.inc files be recognized as IA64, add this to your .vimrc file: >
|
||||
:let g:filetype_inc = "ia64"
|
||||
|
||||
|
||||
INFORM *inform.vim* *inform-syntax*
|
||||
INFORM *inform.vim* *ft-inform-syntax*
|
||||
|
||||
Inform highlighting includes symbols provided by the Inform Library, as
|
||||
most programs make extensive use of it. If do not wish Library symbols
|
||||
@@ -1353,7 +1350,7 @@ startup sequence: >
|
||||
:let inform_highlight_old=1
|
||||
|
||||
|
||||
JAVA *java.vim* *java-syntax*
|
||||
JAVA *java.vim* *ft-java-syntax*
|
||||
|
||||
The java.vim syntax highlighting file offers several options:
|
||||
|
||||
@@ -1446,7 +1443,7 @@ displayed line. The default value is 10. The disadvantage of using a larger
|
||||
number is that redrawing can become slow.
|
||||
|
||||
|
||||
LACE *lace.vim* *lace-syntax*
|
||||
LACE *lace.vim* *ft-lace-syntax*
|
||||
|
||||
Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the
|
||||
style guide lines are not. If you prefer case insensitive highlighting, just
|
||||
@@ -1454,7 +1451,7 @@ define the vim variable 'lace_case_insensitive' in your startup file: >
|
||||
:let lace_case_insensitive=1
|
||||
|
||||
|
||||
LEX *lex.vim* *lex-syntax*
|
||||
LEX *lex.vim* *ft-lex-syntax*
|
||||
|
||||
Lex uses brute-force synchronizing as the "^%%$" section delimiter
|
||||
gives no clue as to what section follows. Consequently, the value for >
|
||||
@@ -1463,7 +1460,26 @@ may be changed by the user if s/he is experiencing synchronization
|
||||
difficulties (such as may happen with large lex files).
|
||||
|
||||
|
||||
LITE *lite.vim* *lite-syntax*
|
||||
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.
|
||||
|
||||
@@ -1477,7 +1493,7 @@ set "lite_minlines" to the value you desire. Example: >
|
||||
:let lite_minlines = 200
|
||||
|
||||
|
||||
LPC *lpc.vim* *lpc-syntax*
|
||||
LPC *lpc.vim* *ft-lpc-syntax*
|
||||
|
||||
LPC stands for a simple, memory-efficient language: Lars Pensj| C. The
|
||||
file name of LPC is usually *.c. Recognizing these files as LPC would bother
|
||||
@@ -1518,7 +1534,7 @@ uLPC has been developed to Pike, so you should use Pike syntax
|
||||
instead, and the name of your source file should be *.pike
|
||||
|
||||
|
||||
LUA *lua.vim* *lua-syntax*
|
||||
LUA *lua.vim* *ft-lua-syntax*
|
||||
|
||||
This syntax file may be used for Lua 4.0 and Lua 5.0 (default). If you are
|
||||
programming in Lua 4.0, use this: >
|
||||
@@ -1528,7 +1544,7 @@ programming in Lua 4.0, use this: >
|
||||
If lua_version variable doesn't exist, it is set to 5.
|
||||
|
||||
|
||||
MAIL *mail.vim*
|
||||
MAIL *mail.vim* *ft-mail.vim*
|
||||
|
||||
Vim highlights all the standard elements of an email (headers, signatures,
|
||||
quoted text and URLs / email addresses). In keeping with standard conventions,
|
||||
@@ -1546,7 +1562,7 @@ with short headers, you can change this to a smaller value: >
|
||||
:let mail_minlines = 30
|
||||
|
||||
|
||||
MAKE *make.vim* *make-syntax*
|
||||
MAKE *make.vim* *ft-make-syntax*
|
||||
|
||||
In makefiles, commands are usually highlighted to make it easy for you to spot
|
||||
errors. However, this may be too much coloring for you. You can turn this
|
||||
@@ -1555,7 +1571,7 @@ feature off by using: >
|
||||
:let make_no_commands = 1
|
||||
|
||||
|
||||
MAPLE *maple.vim* *maple-syntax*
|
||||
MAPLE *maple.vim* *ft-maple-syntax*
|
||||
|
||||
Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language
|
||||
supports many packages of functions which are selectively loaded by the user.
|
||||
@@ -1580,7 +1596,7 @@ $VIMRUNTIME/syntax/syntax.vim).
|
||||
mv_finance mv_logic mv_powseries
|
||||
|
||||
|
||||
MATHEMATICA *mma.vim* *mma-syntax* *mathematica-syntax*
|
||||
MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax*
|
||||
|
||||
Empty *.m files will automatically be presumed to be Matlab files unless you
|
||||
have the following in your .vimrc: >
|
||||
@@ -1588,7 +1604,7 @@ have the following in your .vimrc: >
|
||||
let filetype_m = "mma"
|
||||
|
||||
|
||||
MOO *moo.vim* *moo-syntax*
|
||||
MOO *moo.vim* *ft-moo-syntax*
|
||||
|
||||
If you use C-style comments inside expressions and find it mangles your
|
||||
highlighting, you may want to use extended (slow!) matches for C-style
|
||||
@@ -1624,7 +1640,7 @@ An example of adding sprintf() to the list of known builtin functions: >
|
||||
:syn keyword mooKnownBuiltinFunction sprintf contained
|
||||
|
||||
|
||||
MSQL *msql.vim* *msql-syntax*
|
||||
MSQL *msql.vim* *ft-msql-syntax*
|
||||
|
||||
There are two options for the msql syntax highlighting.
|
||||
|
||||
@@ -1638,7 +1654,7 @@ set "msql_minlines" to the value you desire. Example: >
|
||||
:let msql_minlines = 200
|
||||
|
||||
|
||||
NCF *ncf.vim* *ncf-syntax*
|
||||
NCF *ncf.vim* *ft-ncf-syntax*
|
||||
|
||||
There is one option for NCF syntax highlighting.
|
||||
|
||||
@@ -1650,7 +1666,7 @@ errors, use this: >
|
||||
If you don't want to highlight these errors, leave it unset.
|
||||
|
||||
|
||||
NROFF *nroff.vim* *nroff-syntax*
|
||||
NROFF *nroff.vim* *ft-nroff-syntax*
|
||||
|
||||
The nroff syntax file works with AT&T n/troff out of the box. You need to
|
||||
activate the GNU groff extra features included in the syntax file before you
|
||||
@@ -1721,7 +1737,7 @@ Finally, there is a |groff.vim| syntax file that can be used for enabling
|
||||
groff syntax highlighting either on a file basis or globally by default.
|
||||
|
||||
|
||||
OCAML *ocaml.vim* *ocaml-syntax*
|
||||
OCAML *ocaml.vim* *ft-ocaml-syntax*
|
||||
|
||||
The OCaml syntax file handles files having the following prefixes: .ml,
|
||||
.mli, .mll and .mly. By setting the following variable >
|
||||
@@ -1737,7 +1753,7 @@ prevents highlighting of "end" as error, which is useful when sources
|
||||
contain very long structures that Vim does not synchronize anymore.
|
||||
|
||||
|
||||
PAPP *papp.vim* *papp-syntax*
|
||||
PAPP *papp.vim* *ft-papp-syntax*
|
||||
|
||||
The PApp syntax file handles .papp files and, to a lesser extend, .pxml
|
||||
and .pxsl files which are all a mixture of perl/xml/html/other using xml
|
||||
@@ -1755,7 +1771,7 @@ The newest version of the papp.vim syntax file can usually be found at
|
||||
http://papp.plan9.de.
|
||||
|
||||
|
||||
PASCAL *pascal.vim* *pascal-syntax*
|
||||
PASCAL *pascal.vim* *ft-pascal-syntax*
|
||||
|
||||
Files matching "*.p" could be Progress or Pascal. If the automatic detection
|
||||
doesn't work for you, or you don't edit Progress at all, use this in your
|
||||
@@ -1809,7 +1825,7 @@ will be highlighted as Error. >
|
||||
|
||||
|
||||
|
||||
PERL *perl.vim* *perl-syntax*
|
||||
PERL *perl.vim* *ft-perl-syntax*
|
||||
|
||||
There are a number of possible options to the perl syntax highlighting.
|
||||
|
||||
@@ -1869,7 +1885,7 @@ If you want to fold blocks in if statements, etc. as well set the following: >
|
||||
:let perl_fold_blocks = 1
|
||||
|
||||
|
||||
PHP3 and PHP4 *php.vim* *php3.vim* *php-syntax* *php3-syntax*
|
||||
PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax*
|
||||
|
||||
[note: previously this was called "php3", but since it now also supports php4
|
||||
it has been renamed to "php"]
|
||||
@@ -1922,7 +1938,7 @@ x > 0 to sync at least x lines backwards,
|
||||
x = 0 to sync from start.
|
||||
|
||||
|
||||
PPWIZARD *ppwiz.vim* *ppwiz-syntax*
|
||||
PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax*
|
||||
|
||||
PPWizard is a preprocessor for HTML and OS/2 INF files
|
||||
|
||||
@@ -1944,7 +1960,7 @@ This syntax file has the options:
|
||||
HTML code; if 0, treat HTML code like ordinary text.
|
||||
|
||||
|
||||
PHTML *phtml.vim* *phtml-syntax*
|
||||
PHTML *phtml.vim* *ft-phtml-syntax*
|
||||
|
||||
There are two options for the phtml syntax highlighting.
|
||||
|
||||
@@ -1958,7 +1974,7 @@ set "phtml_minlines" to the value you desire. Example: >
|
||||
:let phtml_minlines = 200
|
||||
|
||||
|
||||
POSTSCRIPT *postscr.vim* *postscr-syntax*
|
||||
POSTSCRIPT *postscr.vim* *ft-postscr-syntax*
|
||||
|
||||
There are several options when it comes to highlighting PostScript.
|
||||
|
||||
@@ -2013,8 +2029,8 @@ postscr_andornot_binary as follows: >
|
||||
:let postscr_andornot_binary=1
|
||||
<
|
||||
|
||||
*ptcap.vim*
|
||||
PRINTCAP + TERMCAP *ptcap-syntax* *termcap-syntax* *printcap-syntax*
|
||||
*ptcap.vim* *ft-printcap-syntax*
|
||||
PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax*
|
||||
|
||||
This syntax file applies to the printcap and termcap databases.
|
||||
|
||||
@@ -2039,7 +2055,7 @@ internal variable to a larger number: >
|
||||
(The default is 20 lines.)
|
||||
|
||||
|
||||
PROGRESS *progress.vim* *progress-syntax*
|
||||
PROGRESS *progress.vim* *ft-progress-syntax*
|
||||
|
||||
Files matching "*.w" could be Progress or cweb. If the automatic detection
|
||||
doesn't work for you, or you don't edit cweb at all, use this in your
|
||||
@@ -2051,7 +2067,7 @@ Pascal. Use this if you don't use assembly and Pascal: >
|
||||
:let filetype_p = "progress"
|
||||
|
||||
|
||||
PYTHON *python.vim* *python-syntax*
|
||||
PYTHON *python.vim* *ft-python-syntax*
|
||||
|
||||
There are four options to control Python syntax highlighting.
|
||||
|
||||
@@ -2072,7 +2088,7 @@ preceding three options): >
|
||||
:let python_highlight_all = 1
|
||||
|
||||
|
||||
QUAKE *quake.vim* *quake-syntax*
|
||||
QUAKE *quake.vim* *ft-quake-syntax*
|
||||
|
||||
The Quake syntax definition should work for most any FPS (First Person
|
||||
Shooter) based on one of the Quake engines. However, the command names vary
|
||||
@@ -2094,7 +2110,7 @@ Any combination of these three variables is legal, but might highlight more
|
||||
commands than are actually available to you by the game.
|
||||
|
||||
|
||||
READLINE *readline.vim* *readline-syntax*
|
||||
READLINE *readline.vim* *ft-readline-syntax*
|
||||
|
||||
The readline library is primarily used by the BASH shell, which adds quite a
|
||||
few commands and options to the ones already available. To highlight these
|
||||
@@ -2106,7 +2122,7 @@ This will add highlighting for the commands that BASH (version 2.05a and
|
||||
later, and part earlier) adds.
|
||||
|
||||
|
||||
REXX *rexx.vim* *rexx-syntax*
|
||||
REXX *rexx.vim* *ft-rexx-syntax*
|
||||
|
||||
If you notice highlighting errors while scrolling backwards, which are fixed
|
||||
when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable
|
||||
@@ -2117,32 +2133,61 @@ displayed line. The default value is 10. The disadvantage of using a larger
|
||||
number is that redrawing can become slow.
|
||||
|
||||
|
||||
RUBY *ruby.vim* *ruby-syntax*
|
||||
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": >
|
||||
|
||||
SCHEME *scheme.vim* *scheme-syntax*
|
||||
: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.
|
||||
|
||||
@@ -2153,7 +2198,7 @@ Also scheme.vim supports keywords of the Chicken Scheme->C compiler. Define
|
||||
b:is_chicken or g:is_chicken, if you need them.
|
||||
|
||||
|
||||
SDL *sdl.vim* *sdl-syntax*
|
||||
SDL *sdl.vim* *ft-sdl-syntax*
|
||||
|
||||
The SDL highlighting probably misses a few keywords, but SDL has so many
|
||||
of them it's almost impossibly to cope.
|
||||
@@ -2173,7 +2218,7 @@ The indentation is probably also incomplete, but right now I am very
|
||||
satisfied with it for my own projects.
|
||||
|
||||
|
||||
SED *sed.vim* *sed-syntax*
|
||||
SED *sed.vim* *ft-sed-syntax*
|
||||
|
||||
To make tabs stand out from regular blanks (accomplished by using Todo
|
||||
highlighting on the tabs), define "highlight_sedtabs" by putting >
|
||||
@@ -2196,7 +2241,7 @@ Bugs:
|
||||
each plausible pattern delimiter).
|
||||
|
||||
|
||||
SGML *sgml.vim* *sgml-syntax*
|
||||
SGML *sgml.vim* *ft-sgml-syntax*
|
||||
|
||||
The coloring scheme for tags in the SGML file works as follows.
|
||||
|
||||
@@ -2237,7 +2282,7 @@ vimrc file: >
|
||||
(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
|
||||
|
||||
|
||||
SH *sh.vim* *sh-syntax*
|
||||
SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
|
||||
|
||||
This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
|
||||
|
||||
@@ -2288,7 +2333,7 @@ The default is to use the twice sh_minlines. Set it to a smaller number to
|
||||
speed up displaying. The disadvantage is that highlight errors may appear.
|
||||
|
||||
|
||||
SPEEDUP (AspenTech plant simulator) *spup.vim* *spup-syntax*
|
||||
SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax*
|
||||
|
||||
The Speedup syntax file has some options:
|
||||
|
||||
@@ -2320,8 +2365,8 @@ fast enough, you can increase minlines and/or maxlines near the end of
|
||||
the syntax file.
|
||||
|
||||
|
||||
SQL *sql.vim* *sql-syntax*
|
||||
*sqlinformix.vim* *sqlinformix-syntax*
|
||||
SQL *sql.vim* *ft-sql-syntax*
|
||||
*sqlinformix.vim* *ft-sqlinformix-syntax*
|
||||
|
||||
While there is an ANSI standard for SQL, most database engines add their
|
||||
own custom extensions. Vim currently supports the Oracle and Informix
|
||||
@@ -2331,7 +2376,7 @@ If you want to use the Informix dialect, put this in your startup vimrc: >
|
||||
:let g:filetype_sql = "sqlinformix"
|
||||
|
||||
|
||||
TCSH *tcsh.vim* *tcsh-syntax*
|
||||
TCSH *tcsh.vim* *ft-tcsh-syntax*
|
||||
|
||||
This covers the shell named "tcsh". It is a superset of csh. See |csh.vim|
|
||||
for how the filetype is detected.
|
||||
@@ -2353,20 +2398,32 @@ displayed line. The default value is 15. The disadvantage of using a larger
|
||||
number is that redrawing can become slow.
|
||||
|
||||
|
||||
TEX *tex.vim* *tex-syntax*
|
||||
TEX *tex.vim* *ft-tex-syntax*
|
||||
|
||||
*tex-folding*
|
||||
Want Syntax Folding? ~
|
||||
|
||||
As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters,
|
||||
sections, subsections, etc are supported. Put >
|
||||
let g:tex_fold_enabled=1
|
||||
in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a
|
||||
modeline at the end of your LaTeX file: >
|
||||
% vim: fdm=syntax
|
||||
<
|
||||
*tex-runon*
|
||||
Run-on Comments/Math? ~
|
||||
|
||||
The tex highlighting supports TeX, LaTeX, and some AmsTeX. The
|
||||
highlighting supports three primary zones: normal, texZone, and texMathZone.
|
||||
Although a considerable effort has been made to have these zones terminate
|
||||
properly, zones delineated by $..$ and $$..$$ cannot be synchronized as
|
||||
there's no difference between start and end patterns. Consequently, a
|
||||
The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The
|
||||
highlighting supports three primary zones/regions: normal, texZone, and
|
||||
texMathZone. Although considerable effort has been made to have these zones
|
||||
terminate properly, zones delineated by $..$ and $$..$$ cannot be synchronized
|
||||
as there's no difference between start and end patterns. Consequently, a
|
||||
special "TeX comment" has been provided >
|
||||
%stopzone
|
||||
which will forcibly terminate the highlighting of either a texZone or a
|
||||
texMathZone.
|
||||
|
||||
*tex-slow*
|
||||
Slow Syntax Highlighting? ~
|
||||
|
||||
If you have a slow computer, you may wish to reduce the values for >
|
||||
@@ -2376,6 +2433,7 @@ If you have a slow computer, you may wish to reduce the values for >
|
||||
increase them. This primarily affects synchronizing (i.e. just what group,
|
||||
if any, is the text at the top of the screen supposed to be in?).
|
||||
|
||||
*tex-error*
|
||||
Excessive Error Highlighting? ~
|
||||
|
||||
The <tex.vim> supports lexical error checking of various sorts. Thus,
|
||||
@@ -2383,28 +2441,24 @@ although the error checking is ofttimes very useful, it can indicate
|
||||
errors where none actually are. If this proves to be a problem for you,
|
||||
you may put in your <.vimrc> the following statement: >
|
||||
let tex_no_error=1
|
||||
and all error checking by <tex.vim> will be suppressed.
|
||||
and all error checking by <syntax/tex.vim> will be suppressed.
|
||||
|
||||
*tex-math*
|
||||
Need a new Math Group? ~
|
||||
|
||||
If you want to include a new math group in your LaTeX, the following
|
||||
code shows you an example as to how you might do so: >
|
||||
call TexNewMathZone(sfx,mathzone,starform)
|
||||
You'll want to provide the new math group with a unique suffix
|
||||
(currently, A-L and V-Z are taken by <syntax/tex.vim> itself).
|
||||
As an example, consider how eqnarray is set up by <syntax/tex.vim>: >
|
||||
call TexNewMathZone("D","eqnarray",1)
|
||||
You'll need to change "mathzone" to the name of your new math group,
|
||||
and then to the call to it in .vim/after/syntax/tex.vim.
|
||||
The "starform" variable, if true, implies that your new math group
|
||||
has a starred form (ie. eqnarray*).
|
||||
|
||||
syn cluster texMathZones add=texMathZoneLOCAL
|
||||
syn region texMathZoneLOCAL start="\\begin\s*{\s*LOCALMATH\s*}"
|
||||
\ end="\\end\s*{\s*LOCALMATH\s*}" keepend
|
||||
\ contains=@texMathZoneGroup
|
||||
if !exists("tex_no_math")
|
||||
syn sync match texSyncMathZoneLOCAL grouphere texMathZoneLOCAL
|
||||
\ "\\begin\s*{\s*LOCALMATH\*\s*}"
|
||||
syn sync match texSyncMathZoneLOCAL groupthere NONE
|
||||
\ "\\end\s*{\s*LOCALMATH\*\s*}"
|
||||
endif
|
||||
hi link texMathZoneLOCAL texMath
|
||||
<
|
||||
You'll need to change LOCALMATH to the name of your new math group,
|
||||
and then to put it into .vim/after/syntax/tex.vim.
|
||||
|
||||
*tex-style*
|
||||
Starting a New Style? ~
|
||||
|
||||
One may use "\makeatletter" in *.tex files, thereby making the use of "@" in
|
||||
@@ -2419,7 +2473,7 @@ Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim>
|
||||
always accept such use of @.
|
||||
|
||||
|
||||
TF *tf.vim* *tf-syntax*
|
||||
TF *tf.vim* *ft-tf-syntax*
|
||||
|
||||
There is one option for the tf syntax highlighting.
|
||||
|
||||
@@ -2429,7 +2483,7 @@ set "tf_minlines" to the value you desire. Example: >
|
||||
:let tf_minlines = your choice
|
||||
|
||||
|
||||
VIM *vim.vim* *vim-syntax*
|
||||
VIM *vim.vim* *ft-vim-syntax*
|
||||
|
||||
There is a tradeoff between more accurate syntax highlighting versus
|
||||
screen updating speed. To improve accuracy, you may wish to increase
|
||||
@@ -2453,7 +2507,7 @@ for external scripting languages (currently perl, python, ruby, and tcl).
|
||||
loaded.
|
||||
|
||||
|
||||
XF86CONFIG *xf86conf.vim* *xf86conf-syntax*
|
||||
XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax*
|
||||
|
||||
The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both
|
||||
variants are supported. Automatic detection is used, but is far from perfect.
|
||||
@@ -2468,7 +2522,7 @@ Note that spaces and underscores in option names are not supported. Use
|
||||
highlighted.
|
||||
|
||||
|
||||
XML *xml.vim* *xml-syntax*
|
||||
XML *xml.vim* *ft-xml-syntax*
|
||||
|
||||
Xml namespaces are highlighted by default. This can be inhibited by
|
||||
setting a global variable: >
|
||||
@@ -2486,7 +2540,7 @@ Note: syntax folding might slow down syntax highlighting significantly,
|
||||
especially for large files.
|
||||
|
||||
|
||||
X Pixmaps (XPM) *xpm.vim* *xpm-syntax*
|
||||
X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax*
|
||||
|
||||
xpm.vim creates its syntax items dynamically based upon the contents of the
|
||||
XPM file. Thus if you make changes e.g. in the color specification strings,
|
||||
@@ -3556,7 +3610,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]
|
||||
|
||||
@@ -3641,15 +3695,15 @@ specified field is used, and settings are merged with previous ones. So, the
|
||||
result is like this single command has been used: >
|
||||
:hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold
|
||||
<
|
||||
*:highlight-verbose*
|
||||
When listing a highlight group and 'verbose' is non-zero, the listing will
|
||||
also tell where it was last set. Example: >
|
||||
:verbose hi Comment
|
||||
< Comment xxx term=bold ctermfg=4 guifg=Blue ~
|
||||
Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~
|
||||
|
||||
For details about when this message is given and when it's valid see
|
||||
|:set-verbose|. When ":hi clear" is used then the script where this command
|
||||
is used will be mentioned for the default values.
|
||||
When ":hi clear" is used then the script where this command is used will be
|
||||
mentioned for the default values. See |:verbose-cmd| for more information.
|
||||
|
||||
*highlight-args* *E416* *E417* *E423*
|
||||
There are three types of terminals for highlighting:
|
||||
@@ -3920,6 +3974,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*
|
||||
@@ -3963,7 +4025,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.
|
||||
|
||||
|
||||
448
runtime/doc/tags
448
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: 2005 Oct 15
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -440,7 +440,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 Jun 06
|
||||
*term.txt* For Vim version 7.0aa. Last change: 2005 Dec 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -291,6 +291,7 @@ Added by Vim (there are no standard codes for these):
|
||||
t_WS set window size (height, width) in characters *t_WS* *'t_WS'*
|
||||
t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'*
|
||||
t_EI end insert mode (block cursor shape) *t_EI* *'t_EI'*
|
||||
|termcap-cursor-shape|
|
||||
t_RV request terminal version string (for xterm) *t_RV* *'t_RV'*
|
||||
|xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes|
|
||||
|
||||
@@ -427,6 +428,7 @@ Example for an xterm, this changes the color of the cursor: >
|
||||
endif
|
||||
NOTE: When Vim exits the shape for Normal mode will remain. The shape from
|
||||
before Vim started will not be restored.
|
||||
{not available when compiled without the +cursorshape feature}
|
||||
|
||||
*termcap-title*
|
||||
The 't_ts' and 't_fs' options are used to set the window title if the terminal
|
||||
@@ -682,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>*
|
||||
@@ -697,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"
|
||||
|
||||
@@ -711,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
|
||||
@@ -742,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 @@
|
||||
*todo.txt* For Vim version 7.0aa. Last change: 2005 Aug 05
|
||||
*todo.txt* For Vim version 7.0aa. Last change: 2005 Dec 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -30,14 +30,79 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
When inside input() and using "CTRL-R =" causing an exception the command line
|
||||
isn't abandoned. (Yukihiro Nakadaira)
|
||||
|
||||
When 'delcombine' is set in Select mode before a character with a combining
|
||||
char the combining char is deleted when it shouldn't. (Tony Mechelynck, Nov
|
||||
27)
|
||||
|
||||
ccomplete:
|
||||
- When an option is set: In completion mode and the user types (identifier)
|
||||
characters, advance to the first match instead of removing the popup menu.
|
||||
If there is no match remove the selection. (Yegappan Lakshmanan)
|
||||
- Complete the longest common match instead of the first match?
|
||||
For all kinds of completions? Configurable?
|
||||
- !_TAG_FILE_FORMAT and it's ilk are listed in the global completions
|
||||
- When completing something that is a structure, add the "." or "->".
|
||||
- When a typedef or struct is local to a file only use it in that file?
|
||||
- Window resize when poup is displayed
|
||||
- page-up / page-down
|
||||
|
||||
spelling:
|
||||
- Use KEEPCASE instead of "KEP". It applies to the word including affixes
|
||||
Hunspell also uses it.
|
||||
- Hunspell has NOSUGGEST flag (use for obscene words?)
|
||||
- Check out Hunspell 1.1.2.
|
||||
- Look into hungarian dictionary:
|
||||
http://magyarispell.sourceforge.net/rc3-beta2.zip
|
||||
- Support breakpoint character <20> 0xb7 and ignore it?
|
||||
8 Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
|
||||
obtain). But new Myspell wordlist will come (Hagen)
|
||||
- Finding suggestions with sound folding is slow. Somehow store the
|
||||
sound-folded words and link to the words it comes from?
|
||||
- Also use the spelling dictionary for dictionary completion.
|
||||
- Have "zg" and "zw" report the file that was modified. (Marvin Renich)
|
||||
- Add a command like "zg" that selects one of the files 'spellfile'.
|
||||
|
||||
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.
|
||||
|
||||
In diff mode deleting lines is very slow. E.g., when diffing two .po files
|
||||
and then sourcing po/cleaup.vim.
|
||||
|
||||
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.
|
||||
Edward L. Fox explains how it should be done for most Asian languages. (2005
|
||||
Nov 24)
|
||||
|
||||
Mac unicode patch (Da Woon Jung):
|
||||
- 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)
|
||||
|
||||
Patch to add a few flags to search(). (Benji Fisher, Nov 29, doc update Dec 1)
|
||||
Also add search???() function that returns list with lnum and col.
|
||||
|
||||
Win32: Use the free downloadable compiler 7.1. 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.
|
||||
|
||||
autoload:
|
||||
Win32: Check that installer puts menu items in "all users" dir when possible,
|
||||
not administrator dir.
|
||||
|
||||
CTRL-X CTRL-L only completes from loaded buffers. Make it work for unloaded
|
||||
buffers too?
|
||||
|
||||
Autoload:
|
||||
- Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
|
||||
script names and a help file and produces a script that can be sourced to
|
||||
install the scripts in the user's directories.
|
||||
@@ -48,6 +113,15 @@ 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?
|
||||
|
||||
Awaiting response:
|
||||
- Win32: tearoff menu window should have a scrollbar when it's taller than
|
||||
the screen.
|
||||
@@ -56,33 +130,65 @@ Awaiting response:
|
||||
|
||||
PLANNED FOR VERSION 7.0:
|
||||
|
||||
- Occult completion: Understands the programming language and finds matches
|
||||
- Omni 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.
|
||||
mechanism. Use CTRL-X CTRL-O and 'omnifunc'. Set 'omnifunc' 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.
|
||||
|
||||
First cleanup the Insert-mode completion.
|
||||
|
||||
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).
|
||||
- Complete longest common string first, like 'wildmode' "longest:full".
|
||||
- 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)
|
||||
- GUI implementation of the popup menu.
|
||||
- When using tags, show match in preview window (function prototype,
|
||||
struct member, etc.).
|
||||
Or use one window for matches, another for context/info (Doug Kearns,
|
||||
2005 Sep 13)
|
||||
- Ideas on: http://www.wholetomato.com/
|
||||
|
||||
|
||||
Completion logic:
|
||||
Use something like 'completefunc'?
|
||||
runtime/complete/{filetype}.vim files?
|
||||
Use runtime/autoload/{filetype}complete.vim files.
|
||||
|
||||
In function arguments suggest variables of expected type.
|
||||
Tags file has "signature" field.
|
||||
|
||||
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.
|
||||
|
||||
Can CTRL-] (jump to tag) include the "." and "->" to restrict the
|
||||
number of possible matches? (Flemming Madsen)
|
||||
|
||||
In general: Besides completion, figure out the type of a variable
|
||||
and use it for information.
|
||||
|
||||
Ideas from others:
|
||||
http://www.vim.org/scripts/script.php?script_id=747
|
||||
http://sourceforge.net/projects/insenvim
|
||||
or http://insenvim.sourceforge.net
|
||||
Java, XML, HTML, C++, JSP, SQL, C#
|
||||
MS-Windows only, lots of dependencies (e.g. Perl, Internet
|
||||
explorer), uses .dll shared libraries.
|
||||
For C++ uses $INCLUDE environment var.
|
||||
Uses Perl for C++.
|
||||
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)
|
||||
http://sourceforge.net/projects/insenvim
|
||||
of http://insenvim.sourceforge.net
|
||||
IComplete: http://www.vim.org/scripts/script.php?script_id=1265
|
||||
and http://stud4.tuwien.ac.at/~e0125672/icomplete/
|
||||
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
|
||||
@@ -116,6 +222,8 @@ 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
|
||||
@@ -142,9 +250,9 @@ PLANNED FOR VERSION 7.0:
|
||||
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
|
||||
@@ -158,6 +266,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.
|
||||
@@ -167,6 +277,8 @@ PLANNED FOR VERSION 7.0:
|
||||
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).
|
||||
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",
|
||||
"foldcolumn". (Benji Fisher, 2004 Jun 21)
|
||||
- FileChangedShellPost autocommand event: after (not) reloading a changed
|
||||
@@ -179,7 +291,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.
|
||||
@@ -250,7 +362,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 gui_mch_browsedir() for Motif, 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:
|
||||
@@ -302,7 +414,9 @@ Awaiting updated patches:
|
||||
How does this work? Missing comments.
|
||||
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
|
||||
@@ -344,7 +458,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
|
||||
@@ -456,18 +570,13 @@ GTK+ GUI known bugs:
|
||||
8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
|
||||
Machowski) They are displayed as separate characters. Problem in
|
||||
creating a label?
|
||||
8 GTK 2: Combining UTF-8 characters are sometimes not drawn properly.
|
||||
Depends on the font size, "monospace 13" has the problem. Vim seems to do
|
||||
everything right, must be a GTK bug. Is there a way to work around it?
|
||||
9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim
|
||||
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
|
||||
@@ -535,8 +644,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
|
||||
@@ -738,7 +846,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.
|
||||
@@ -750,8 +867,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)
|
||||
@@ -942,8 +1057,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
|
||||
@@ -1278,6 +1391,44 @@ User Friendlier:
|
||||
Spell checking:
|
||||
9 Work together with OpenOffice.org to update the wordlists. (Adri Verhoef,
|
||||
Aad Nales) Setup vim-spell maillist?
|
||||
- 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?
|
||||
- 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
|
||||
COMPOUNDMIN and COMPOUNDMAX to a reasonable value.
|
||||
- PSEUDOROOT == NEEDAFFIX
|
||||
- COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word
|
||||
Or use COMPOUNDED2, COMPOUNDED3, etc.
|
||||
- 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
|
||||
specific prefixes with suffixes.
|
||||
Alternative:
|
||||
PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond}
|
||||
We might not need this at all, you can use the NEEDAFFIX flag and the
|
||||
affix which is required.
|
||||
- When a suffix has more than one syllable, it may count as a word for
|
||||
COMPOUNDMAX.
|
||||
- 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.
|
||||
- Implement multiple flags for compound words and CMP item?
|
||||
Await comments from other spell checking authors.
|
||||
- Also see tklspell: http://tkltrans.sourceforge.net/
|
||||
8 Charles Campbell asks for method to add "contained" groups to existing
|
||||
syntax items (to add @Spell).
|
||||
Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn
|
||||
@@ -1290,30 +1441,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)
|
||||
@@ -1407,6 +1555,10 @@ Multi-byte characters:
|
||||
7 In "-- INSERT (lang) --" show the name of the keymap used instead of
|
||||
"lang". (Ilya Dogolazky)
|
||||
- Make 'langmap' accept multi-byte characters.
|
||||
- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup
|
||||
table anymore (breakat_flags[]).
|
||||
Simplistic solution: when 'formatoptions' contains "m" also break a line
|
||||
at a multi-byte character >= 0x100.
|
||||
- Do we need the reverse of 'keymap', like 'langmap' but with files and
|
||||
multi-byte characters? E.g., when using a Russian keyboard.
|
||||
- Add the possibility to enter mappings which are used whenever normal text
|
||||
@@ -1479,6 +1631,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:
|
||||
@@ -1640,7 +1797,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.
|
||||
@@ -1686,7 +1842,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:
|
||||
@@ -1772,7 +1927,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).
|
||||
@@ -1833,7 +1988,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
|
||||
@@ -2020,9 +2175,9 @@ GUI:
|
||||
7 X11: Support cursorColor resource and "-cr" argument.
|
||||
8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask
|
||||
to include CTRL for keys where CTRL produces the same ASCII code.
|
||||
7 Add some code to handle proportional fonts? Need to draw each character
|
||||
separately (like xterm). Also for when a double-width font is not exactly
|
||||
double-width. (Maeda)
|
||||
7 Add some code to handle proportional fonts on more systems? Need to draw
|
||||
each character separately (like xterm). Also for when a double-width font
|
||||
is not exactly double-width. (Maeda)
|
||||
8 Should take font from xterm where gvim was started (if no other default).
|
||||
8 Selecting font names in X11 is difficult, make a script or something to
|
||||
select one.
|
||||
@@ -2171,12 +2326,12 @@ Insert mode completion/expansion:
|
||||
9 ^X^L completion doesn't repeat correctly. It uses the first match with
|
||||
the last added line, instead of continuing where the last match ended.
|
||||
(Webb)
|
||||
8 The code has become too complex. Redesign it, or at least add proper
|
||||
comments.
|
||||
8 Add option to set different behavior for Insert mode completion:
|
||||
- ignore/match case
|
||||
- different characters than 'iskeyword'
|
||||
8 Add a command to undo the completion, go back to the original text.
|
||||
7 Completion of an abbreviation: Can leave letters out, like what Instant
|
||||
text does: www.textware.com
|
||||
8 Use the class information in the tags file to do context-sensitive
|
||||
completion. After "foo." complete all member functions/variables of
|
||||
"foo". Need to search backwards for the class definition of foo.
|
||||
@@ -2427,7 +2582,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.
|
||||
|
||||
|
||||
@@ -2510,7 +2665,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.
|
||||
@@ -2571,16 +2726,12 @@ More advanced repeating commands:
|
||||
|
||||
|
||||
Mappings and Abbreviations:
|
||||
8 Let ":verbose map xx" report where the mapping was set, just like with
|
||||
":verbose set".
|
||||
8 When "0" is mapped (it is a movement command) this mapping should not be
|
||||
used after typing another number, e.g. "20l". (Charles Campbell)
|
||||
Is this possible without disabling the mapping of the following command?
|
||||
8 Should mapping <C-A> and <C-S-A> both work?
|
||||
7 ":abbr b byte", append "b " to an existing word still expands to "byte".
|
||||
This is Vi compatible, but can we avoid it anyway?
|
||||
8 ":verbose map" could show the script where the mapping was defined.
|
||||
m_script_ID can be used.
|
||||
8 To make a mapping work with a prepended "x to select a register, store the
|
||||
last _typed_ register name and access it with "&.
|
||||
8 Add ":amap", like ":amenu".
|
||||
@@ -2592,8 +2743,6 @@ Mappings and Abbreviations:
|
||||
8 Allow mapping of CTRL-@ (anywhere in the LHS).
|
||||
8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
|
||||
(?) work.
|
||||
7 ":verbose map" should display where a mapping was defined, like ":verbose
|
||||
set".
|
||||
8 Add a way to save a current mapping and restore it later. Use a function
|
||||
that returns the mapping command to restore it: mapcmd()? mapcheck() is
|
||||
not fool proof. How to handle ambiguous mappings?
|
||||
@@ -2908,20 +3057,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.
|
||||
@@ -2931,8 +3087,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:
|
||||
@@ -3260,7 +3414,8 @@ Various improvements:
|
||||
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'.
|
||||
builtin formatting or 'formatprg'. Or use a string that starts with "="
|
||||
in 'formatprg': "=MyFormat()".
|
||||
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
|
||||
@@ -3563,6 +3718,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*uganda.txt* For Vim version 7.0aa. Last change: 2005 Feb 24
|
||||
*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.
|
||||
@@ -249,10 +264,11 @@ Europe: Use a bank transfer if possible. Your bank should have a form
|
||||
Credit Card: You can use PayPal to send money with a Credit card. This is
|
||||
the most widely used Internet based payment system. It's
|
||||
really simple to use. Use this link to find more info:
|
||||
https://www.paypal.com/affil/pal=Bram%40moolenaar.net
|
||||
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 $150 sending a cheque is preferred.
|
||||
Bram@iccf-holland.org
|
||||
For amounts above 400 Euro ($500) sending a check is
|
||||
preferred.
|
||||
|
||||
Others: Transfer to one of these accounts if possible:
|
||||
Postbank, account 4548774
|
||||
@@ -263,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 @@
|
||||
*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_41.txt* For Vim version 7.0aa. Last change: 2005 Jun 09
|
||||
*usr_41.txt* For Vim version 7.0aa. Last change: 2005 Nov 30
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -2114,7 +2114,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 +2139,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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 7.0aa. Last change: 2005 Jun 22
|
||||
*various.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -268,6 +268,8 @@ N *+cmdline_info* |'showcmd'| and |'ruler'|
|
||||
N *+comments* |'comments'| support
|
||||
N *+cryptv* encryption support |encryption|
|
||||
B *+cscope* |cscope| support
|
||||
m *+cursorshape* |termcap-cursor-shape| support
|
||||
m *+debug* Compiled for debugging.
|
||||
N *+dialog_gui* Support for |:confirm| with GUI dialog.
|
||||
N *+dialog_con* Support for |:confirm| with console dialog.
|
||||
N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
|
||||
@@ -293,7 +295,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'|
|
||||
@@ -323,14 +326,17 @@ 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'|
|
||||
@@ -343,7 +349,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
|
||||
@@ -485,6 +492,15 @@ N *+X11* Unix only: can restore window title |X11|
|
||||
For logging verbose messages in a file use the
|
||||
'verbosefile' option.
|
||||
|
||||
*:verbose-cmd*
|
||||
When 'verbose' is non-zero, listing the value of a Vim option or a key map or
|
||||
an abbreviation or a user-defined function or a command or a highlight group
|
||||
or an autocommand will also display where it was last defined. If it was
|
||||
defined manually then there will be no "Last set" message. When it was
|
||||
defined while executing a function, user command or autocommand, the script in
|
||||
which it was defined is reported.
|
||||
{not available when compiled without the +eval feature}
|
||||
|
||||
*K*
|
||||
K Run a program to lookup the keyword under the
|
||||
cursor. The name of the program is given with the
|
||||
|
||||
@@ -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 Aug 05
|
||||
*version7.txt* For Vim version 7.0aa. Last change: 2005 Dec 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -20,7 +20,7 @@ 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|
|
||||
Translated manual pages |new-manpage-trans|
|
||||
@@ -29,6 +29,7 @@ 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|
|
||||
Various new items |new-items-7|
|
||||
|
||||
IMPROVEMENTS |improvements-7|
|
||||
@@ -66,6 +67,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:
|
||||
|
||||
@@ -119,6 +122,14 @@ translated to <Home>, both for the keys and for mappings. Also for <xEnd>,
|
||||
When a .gvimrc file exists then 'compatible' is off, just like when a ".vimrc"
|
||||
file exists.
|
||||
|
||||
When making a string upper-case with "vlllU" or similar then the German sharp
|
||||
s is replaced with "SS". This does not happen with "~" to avoid backwards
|
||||
compatibility problems and because "SS" can't be changed back to a sharp s.
|
||||
|
||||
"gd" previously found the very first occurrence of a variable in a function,
|
||||
that could be the function argument without type. Now it finds the position
|
||||
where the type is given.
|
||||
|
||||
==============================================================================
|
||||
NEW FEATURES *new-7*
|
||||
|
||||
@@ -157,7 +168,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
|
||||
@@ -172,11 +183,25 @@ 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 considers struct and class members,
|
||||
unions, 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|
|
||||
XHTML |ft-html-omni|
|
||||
|
||||
When the 'completeopt' option contains "menu" then matches for Insert mode
|
||||
completion are displayed in a popup menu.
|
||||
|
||||
|
||||
MzScheme interface *new-MzScheme*
|
||||
@@ -317,25 +342,47 @@ 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.
|
||||
|
||||
|
||||
Various new items *new-items-7*
|
||||
-----------------
|
||||
|
||||
Normal mode commands: ~
|
||||
|
||||
a", a' and a` New text objects to select quoted strings. |a'|
|
||||
i", i' and i' (Taro Muraoka)
|
||||
i", i' and i` (Taro Muraoka)
|
||||
|
||||
CTRL-W <Enter> In the quickfix window: opens a new window to show the
|
||||
location of the error under the cursor.
|
||||
|
||||
|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>|
|
||||
|
||||
Insert mode commands: ~
|
||||
|
||||
CTRL-\ CTRL-O Execute a Normal mode command. Like CTRL-O but
|
||||
without moving the cursor.
|
||||
|
||||
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,18 +410,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).
|
||||
@@ -392,7 +436,26 @@ Win32: The ":winpos" command now also works in the console. (Vipin Aravind)
|
||||
Lakshmanan).
|
||||
|
||||
|
||||
New functions: ~
|
||||
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,11 +479,14 @@ 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
|
||||
|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
|
||||
@@ -436,6 +502,7 @@ 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
|
||||
|searchdecl()| search for declaration of variable
|
||||
|setqflist()| create a quickfix list (Yegappan Lakshmanan)
|
||||
|sort()| sort a List
|
||||
|soundfold()| get the sound-a-like equivalent of a word
|
||||
@@ -462,6 +529,7 @@ 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)
|
||||
|
||||
|
||||
New items in search patterns: ~
|
||||
@@ -529,21 +597,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.
|
||||
|
||||
@@ -554,6 +624,31 @@ when the buffer does not have a name or no specific name. See
|
||||
For xterm most combinations of modifiers with function keys are recognized.
|
||||
|xterm-modifier-keys|
|
||||
|
||||
When 'verbose' is set the output of ":highlight" will show where a highlight
|
||||
item was last set.
|
||||
When 'verbose' is set the output of the ":map", ":abbreviate", ":command",
|
||||
":function" and ":autocmd" commands will show where it was last defined.
|
||||
(Yegappan Lakshmanan)
|
||||
|
||||
":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.
|
||||
|
||||
==============================================================================
|
||||
IMPROVEMENTS *improvements-7*
|
||||
|
||||
@@ -561,6 +656,9 @@ 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
|
||||
@@ -575,10 +673,14 @@ 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)
|
||||
@@ -637,6 +739,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
|
||||
@@ -698,7 +804,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
|
||||
@@ -735,6 +841,7 @@ pointer position instead of the text cursor.
|
||||
The table with encodings has been expanded with many MS-Windows codepages,
|
||||
such as cp1250 and cp737, so that these can also be used on Unix without
|
||||
prepending "8bit-".
|
||||
When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part.
|
||||
|
||||
Added the "customlist" completion argument to a user-defined command. The
|
||||
user-defined completion function should return the completion candidates as a
|
||||
@@ -747,15 +854,68 @@ 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)
|
||||
|
||||
When 'verbose' is set the output of ":highlight" will show where a highlight
|
||||
item was last set.
|
||||
|
||||
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
|
||||
pattern matches. In the example a ":" not followed by a line number is
|
||||
included in the file name. (suggested by Emanuele Giaquinta)
|
||||
|
||||
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 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.
|
||||
|
||||
==============================================================================
|
||||
COMPILE TIME CHANGES *compile-changes-7*
|
||||
|
||||
@@ -787,6 +947,10 @@ functions.
|
||||
Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c
|
||||
without copying the code.
|
||||
|
||||
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.
|
||||
|
||||
==============================================================================
|
||||
BUG FIXES *bug-fixes-7*
|
||||
|
||||
@@ -843,7 +1007,8 @@ When converting a string with a hex or octal number the leading '-' was
|
||||
ignored. ":echo '-05' + 0" resulted in 5 instead of -5.
|
||||
|
||||
Using "@:" to repeat a command line didn't work when it contains control
|
||||
characters.
|
||||
characters. Also remove "'<,'>" when in Visual mode to avoid that it appears
|
||||
twice.
|
||||
|
||||
When using file completion for a user command, it would not expand environment
|
||||
variables like for a regular command with a file argument.
|
||||
@@ -979,10 +1144,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.
|
||||
|
||||
@@ -1251,7 +1412,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
|
||||
@@ -1274,4 +1435,64 @@ were not set.
|
||||
|
||||
Win32: Could not use "**/" in 'path', it had to be "**\".
|
||||
|
||||
The search pattern "\n" did not match at the end of the last line.
|
||||
|
||||
Searching for a pattern backwards, starting on the NUL at the end of the line
|
||||
and 'encoding' is "utf-8" would match the pattern just before it incorrectly.
|
||||
Affected searchpair('/\*', '', '\*/').
|
||||
|
||||
For the Find/Replace dialog it was possible that not finding the text resulted
|
||||
in an error message while redrawing, which cleared the syntax highlighting
|
||||
while it was being used, resulting in a crash. Now don't clear syntax
|
||||
highlighting, disable it with b_syn_error.
|
||||
|
||||
Win32: Combining UTF-8 characters were drawn on the previous character.
|
||||
Could be noticed with a Thai font.
|
||||
|
||||
Output of ":function" could leave some of the typed text behind. (Yegappan
|
||||
Lakshmanan)
|
||||
|
||||
When the command line history has only a few lines the command line window
|
||||
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.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
||||
@@ -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: 2005 Oct 09
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Jul 13
|
||||
" Last Change: 2005 Nov 23
|
||||
|
||||
" 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
|
||||
|
||||
@@ -629,8 +632,8 @@ au BufNewFile,BufRead *.hex,*.h32 setf hex
|
||||
" Tilde (must be before HTML)
|
||||
au BufNewFile,BufRead *.t.html setf tilde
|
||||
|
||||
" HTML (.shtml and .stm for server side, .rhtml for Ruby html)
|
||||
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.rhtml,*.stm call s:FThtml()
|
||||
" HTML (.shtml and .stm for server side)
|
||||
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call s:FThtml()
|
||||
|
||||
" Distinguish between HTML and XHTML
|
||||
fun! s:FThtml()
|
||||
@@ -645,6 +648,8 @@ fun! s:FThtml()
|
||||
setf html
|
||||
endfun
|
||||
|
||||
" HTML with Ruby - eRuby
|
||||
au BufNewFile,BufRead *.rhtml setf eruby
|
||||
|
||||
" HTML with M4
|
||||
au BufNewFile,BufRead *.html.m4 setf htmlm4
|
||||
@@ -823,7 +828,7 @@ au BufNewFile,BufRead *.m4
|
||||
au BufNewFile,BufRead *.mgp setf mgp
|
||||
|
||||
" Mail (for Elm, trn, mutt, rn, slrn)
|
||||
au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt-*-\w\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
|
||||
au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
|
||||
|
||||
" Mailcap configuration file
|
||||
au BufNewFile,BufRead .mailcap,mailcap setf mailcap
|
||||
@@ -953,8 +958,8 @@ au BufRead,BufNewFile *.mu setf mupad
|
||||
au BufNewFile,BufRead *.mush setf mush
|
||||
|
||||
" Mutt setup file
|
||||
au BufNewFile,BufRead Muttrc setf muttrc
|
||||
au BufNewFile,BufRead .muttrc*,*/.mutt/muttrc* call s:StarSetf('muttrc')
|
||||
au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
|
||||
au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc')
|
||||
|
||||
" Nano
|
||||
au BufNewFile,BufRead /etc/nanorc,.nanorc setf nanorc
|
||||
@@ -1198,7 +1203,7 @@ function! s:FTprogress_asm()
|
||||
" This function checks for an assembly comment the first ten lines.
|
||||
" If not found, assume Progress.
|
||||
let lnum = 1
|
||||
while lnum <= 10
|
||||
while lnum <= 10 && lnum < line('$')
|
||||
let line = getline(lnum)
|
||||
if line =~ '^\s*;' || line =~ '^\*'
|
||||
call s:FTasm()
|
||||
@@ -1225,9 +1230,9 @@ function! s:FTprogress_pascal()
|
||||
" Look for either an opening comment or a program start.
|
||||
" If not found, assume Progress.
|
||||
let lnum = 1
|
||||
while lnum <= 10
|
||||
while lnum <= 10 && lnum < line('$')
|
||||
let line = getline(lnum)
|
||||
if line =~ '^\s*\(program\|procedure\|function\|const\|type\|var\)\>'
|
||||
if line =~ '^\s*\(program\|unit\|procedure\|function\|const\|type\|var\)\>'
|
||||
\ || line =~ '^\s*{' || line =~ '^\s*(\*'
|
||||
setf pascal
|
||||
return
|
||||
@@ -1344,6 +1349,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
|
||||
|
||||
@@ -1607,9 +1615,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
|
||||
@@ -1617,8 +1635,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
|
||||
@@ -1667,6 +1685,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
|
||||
|
||||
@@ -1700,6 +1721,9 @@ au BufNewFile,BufRead /etc/updatedb.conf setf updatedb
|
||||
" Verilog HDL
|
||||
au BufNewFile,BufRead *.v setf verilog
|
||||
|
||||
" Verilog-AMS HDL
|
||||
au BufNewFile,BufRead *.va,*.vams setf verilogams
|
||||
|
||||
" VHDL
|
||||
au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst setf vhdl
|
||||
au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl')
|
||||
@@ -1829,8 +1853,13 @@ au BufNewFile,BufRead *.y call s:FTy()
|
||||
|
||||
fun! s:FTy()
|
||||
let n = 1
|
||||
while n < 10 && n < line("$")
|
||||
if getline(n) =~ '^\s*\(#\|class\>\)'
|
||||
while n < 100 && n < line("$")
|
||||
let line = getline(n)
|
||||
if line =~ '^\s*%'
|
||||
setf yacc
|
||||
return
|
||||
endif
|
||||
if getline(n) =~ '^\s*\(#\|class\>\)' && getline(n) !~ '^\s*#\s*include'
|
||||
setf racc
|
||||
return
|
||||
endif
|
||||
@@ -1872,6 +1901,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')
|
||||
|
||||
@@ -1921,7 +1953,7 @@ au BufNewFile,BufRead /etc/modprobe.* call s:StarSetf('modconf')
|
||||
au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby')
|
||||
|
||||
" Mutt setup file
|
||||
au BufNewFile,BufRead muttrc*,Muttrc* call s:StarSetf('muttrc')
|
||||
au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc* call s:StarSetf('muttrc')
|
||||
|
||||
" Nroff macros
|
||||
au BufNewFile,BufRead tmac.* call s:StarSetf('nroff')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2005 Jun 22
|
||||
" Last Change: 2005 Sep 01
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
@@ -15,12 +15,17 @@ let b:did_ftplugin = 1
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
let b:undo_ftplugin = "setl fo< com< | if has('vms') | setl isk< | endif"
|
||||
let b:undo_ftplugin = "setl fo< com< ofu< | if has('vms') | setl isk< | endif"
|
||||
|
||||
" Set 'formatoptions' to break comment lines but not other lines,
|
||||
" and insert the comment leader when hitting <CR> or using "o".
|
||||
setlocal fo-=t fo+=croql
|
||||
|
||||
" Set completion with CTRL-X CTRL-O to autoloaded function.
|
||||
if exists('&ofu')
|
||||
setlocal ofu=ccomplete#Complete
|
||||
endif
|
||||
|
||||
" Set 'comments' to format dashed lists in comments.
|
||||
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Debian Changelog
|
||||
" Maintainer: Michael Piefel <piefel@informatik.hu-berlin.de>
|
||||
" Last Change: 23 March 2004
|
||||
" Last Change: 15 August 2005
|
||||
|
||||
if exists("g:did_changelog_ftplugin")
|
||||
finish
|
||||
@@ -30,7 +30,7 @@ function <SID>Email()
|
||||
elseif exists("$EMAIL")
|
||||
return $EMAIL
|
||||
elseif exists("g:debianemail")
|
||||
return g:debianfullemail
|
||||
return g:debianemail
|
||||
else
|
||||
return "your@email.address"
|
||||
endif
|
||||
|
||||
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
|
||||
|
||||
@@ -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,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: 2005 Oct 13 - removed GPL; better matchit support (MM, SZ)
|
||||
"
|
||||
" 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,15 @@ 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,14 +1,14 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: pascal
|
||||
" Maintainer: Dan Sharp <dwsharp at hotmail dot com>
|
||||
" Last Changed: 2003 Sep 29
|
||||
" Last Changed: 2005 Sep 05
|
||||
" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if exists("loaded_matchit")
|
||||
let b:match_words='\<begin\>:\<end\>'
|
||||
let b:match_words='\<\%(begin\|case\|try\)\>:\<end\>'
|
||||
endif
|
||||
|
||||
" Undo the stuff we changed.
|
||||
|
||||
@@ -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_]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: php
|
||||
" Maintainer: Dan Sharp <dwsharp at hotmail dot com>
|
||||
" Last Changed: 2004 Jul 08
|
||||
" Last Changed: 2005 Sep 05
|
||||
" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin
|
||||
|
||||
if exists("b:did_ftplugin") | finish | endif
|
||||
@@ -41,7 +41,7 @@ endif
|
||||
setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
|
||||
setlocal iskeyword+=$
|
||||
if exists("loaded_matchit")
|
||||
let b:match_words = '\<switch\>:\<endswitch\>,' .
|
||||
let b:match_words = '<php?:?>,\<switch\>:\<endswitch\>,' .
|
||||
\ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
|
||||
\ '\<while\>:\<endwhile\>,' .
|
||||
\ '\<do\>:\<while\>,' .
|
||||
|
||||
@@ -1,14 +1,120 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Ruby
|
||||
" Maintainer: Gavin Sinclair <gsinclair@soyabean.com.au>
|
||||
" Last Change: 2002/08/12
|
||||
" URL: www.soyabean.com.au/gavin/vim/index.html
|
||||
" Language: Ruby
|
||||
" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.au>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
"
|
||||
" Original matchit support thanks to Ned Konz. See his ftplugin/ruby.vim at
|
||||
" http://bike-nomad.com/vim/ruby.vim.
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if (exists("b:did_ftplugin"))
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" There are no known setting particularly appropriate for Ruby. Please
|
||||
" contact the maintainer if you think of some.
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Matchit support
|
||||
if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_ignorecase = 0
|
||||
|
||||
" TODO: improve optional do loops
|
||||
let b:match_words =
|
||||
\ '\%(' .
|
||||
\ '\%(\%(\.\|\:\:\)\s*\|\:\)\@<!\<\%(class\|module\|begin\|def\|case\|for\|do\)\>' .
|
||||
\ '\|' .
|
||||
\ '\%(\%(^\|\.\.\.\=\|[\,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\%(if\|unless\|until\|while\)\>' .
|
||||
\ '\)' .
|
||||
\ ':' .
|
||||
\ '\%(' .
|
||||
\ '\%(\%(\.\|\:\:\)\s*\|\:\)\@<!\<\%(else\|elsif\|ensure\|when\)\>' .
|
||||
\ '\|' .
|
||||
\ '\%(\%(^\|;\)\s*\)\@<=\<rescue\>' .
|
||||
\ '\)' .
|
||||
\ ':' .
|
||||
\ '\%(\%(\.\|\:\:\)\s*\|\:\)\@<!\<end\>'
|
||||
|
||||
let b:match_skip =
|
||||
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
|
||||
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Interpolation\\|" .
|
||||
\ "NoInterpolation\\|Escape\\|Comment\\|Documentation\\)\\>'"
|
||||
|
||||
endif
|
||||
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
setlocal include=^\\s*\\<\\(load\\\|\w*require\\)\\>
|
||||
setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
|
||||
setlocal suffixesadd=.rb
|
||||
|
||||
" TODO:
|
||||
"setlocal define=^\\s*def
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
if !exists("s:rubypath")
|
||||
if executable("ruby")
|
||||
let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
|
||||
if &shellxquote == "'"
|
||||
let s:rubypath = system('ruby -e "' . s:code . '"')
|
||||
else
|
||||
let s:rubypath = system("ruby -e '" . s:code . "'")
|
||||
endif
|
||||
let s:rubypath = '.,' . substitute(s:rubypath, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
|
||||
else
|
||||
" If we can't call ruby to get its path, just default to using the
|
||||
" current directory and the directory of the current file.
|
||||
let s:rubypath = ".,,"
|
||||
endif
|
||||
endif
|
||||
|
||||
let &l:path = s:rubypath
|
||||
|
||||
if has("gui_win32") && !exists("b:browsefilter")
|
||||
let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" .
|
||||
\ "All Files (*.*)\t*.*\n"
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< "
|
||||
\ "| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
"
|
||||
" Instructions for enabling "matchit" support:
|
||||
"
|
||||
" 1. Look for the latest "matchit" plugin at
|
||||
"
|
||||
" http://www.vim.org/scripts/script.php?script_id=39
|
||||
"
|
||||
" It is also packaged with Vim, in the $VIMRUNTIME/macros directory.
|
||||
"
|
||||
" 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc).
|
||||
"
|
||||
" 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin).
|
||||
"
|
||||
" 4. Ensure this file (ftplugin/ruby.vim) is installed.
|
||||
"
|
||||
" 5. Ensure you have this line in your $HOME/.vimrc:
|
||||
" filetype plugin on
|
||||
"
|
||||
" 6. Restart Vim and create the matchit documentation:
|
||||
"
|
||||
" :helptags ~/.vim/doc
|
||||
"
|
||||
" Now you can do ":help matchit", and you should be able to use "%" on Ruby
|
||||
" keywords. Try ":echo b:match_words" to be sure.
|
||||
"
|
||||
" Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the
|
||||
" locations of plugin directories, etc., as there are several options, and it
|
||||
" differs on Windows. Email gsinclair@soyabean.com.au if you need help.
|
||||
"
|
||||
|
||||
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: Verilog HDL
|
||||
" Maintainer: Chih-Tsun Huang <cthuang@larc.ee.nthu.edu.tw>
|
||||
" Last Change: Wed Oct 31 16:16:19 CST 2001
|
||||
" Last Change: Mon Sep 5 11:05:54 CST 2005
|
||||
" URL: http://larc.ee.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
@@ -12,6 +12,10 @@ endif
|
||||
" Don't load another plugin for this buffer
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" Undo the plugin effect
|
||||
let b:undo_ftplugin = "setlocal fo< com< tw<"
|
||||
\ . "| unlet b:browsefilter b:match_ignorecase b:match_words"
|
||||
|
||||
" Set 'formatoptions' to break comment lines but not other lines,
|
||||
" and insert the comment leader when hitting <CR> or using "o".
|
||||
setlocal fo-=t fo+=croqlm1
|
||||
@@ -20,7 +24,9 @@ setlocal fo-=t fo+=croqlm1
|
||||
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
|
||||
|
||||
" Format comments to be up to 78 characters long
|
||||
setlocal tw=75
|
||||
if &textwidth == 0
|
||||
setlocal tw=78
|
||||
endif
|
||||
|
||||
set cpo-=C
|
||||
|
||||
|
||||
@@ -32,6 +32,15 @@ if exists("loaded_matchit")
|
||||
\ '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>'
|
||||
endif
|
||||
|
||||
"
|
||||
" For Omni completion, by Mikolaj Machowski.
|
||||
if exists('&ofu')
|
||||
setlocal ofu=xmlcomplete#CompleteTags
|
||||
endif
|
||||
command! -nargs=+ XMLns call xmlcomplete#CreateConnection(<f-args>)
|
||||
command! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>)
|
||||
|
||||
|
||||
" Change the :browse e filter to primarily show xml-related files.
|
||||
if has("gui_win32")
|
||||
let b:browsefilter="XML Files (*.xml)\t*.xml\n" .
|
||||
|
||||
22
runtime/indent/d.vim
Normal file
22
runtime/indent/d.vim
Normal file
@@ -0,0 +1,22 @@
|
||||
" Vim indent file for the D programming language (version 0.137).
|
||||
"
|
||||
" Language: D
|
||||
" Maintainer: Jason Mills<jmills@cs.mun.ca>
|
||||
" Last Change: 2005 Nov 22
|
||||
" Version: 0.1
|
||||
"
|
||||
" Please email me with bugs, comments, and suggestion. Put vim in the subject
|
||||
" to ensure the email will not be marked has spam.
|
||||
"
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
" D indenting is a lot like the built-in C indenting.
|
||||
setlocal cindent
|
||||
|
||||
" vim: ts=8 noet
|
||||
14
runtime/indent/eruby.vim
Normal file
14
runtime/indent/eruby.vim
Normal file
@@ -0,0 +1,14 @@
|
||||
" Vim indent file
|
||||
" Language: Ruby
|
||||
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! indent/html.vim
|
||||
@@ -1,16 +1,16 @@
|
||||
" Vim indent file
|
||||
" Language: OCaml
|
||||
" Maintainers: Jean-Francois Yuen <jfyuen@happycoders.org>
|
||||
" Mike Leary <leary@nwlink.com>
|
||||
" Markus Mottl <markus@oefai.at>
|
||||
" URL: http://www.oefai.at/~markus/vim/indent/ocaml.vim
|
||||
" Last Change: 2004 Apr 11 - Added indent for 'class' (JY)
|
||||
" 2003 Sep 16 - Added 'private' as keyword (JY)
|
||||
" 2003 Mar 29 - Fixed bug with 'if' and 'else' (JY)
|
||||
" Maintainers: Jean-Francois Yuen <jfyuen@happycoders.org>
|
||||
" Mike Leary <leary@nwlink.com>
|
||||
" Markus Mottl <markus.mottl@gmail.com>
|
||||
" URL: http://www.ocaml.info/vim/indent/ocaml.vim
|
||||
" Last Change: 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
|
||||
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
|
||||
" 2005 Apr 11 - Fixed an indentation bug concerning "let" (MM)
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
@@ -22,14 +22,16 @@ setlocal nosmartindent
|
||||
setlocal textwidth=80
|
||||
|
||||
" Comment formatting
|
||||
if (has("comments"))
|
||||
setlocal comments=sr:(*,mb:*,ex:*)
|
||||
setlocal fo=cqort
|
||||
if !exists("no_ocaml_comments")
|
||||
if (has("comments"))
|
||||
setlocal comments=sr:(*,mb:*,ex:*)
|
||||
setlocal fo=cqort
|
||||
endif
|
||||
endif
|
||||
|
||||
" Only define the function once.
|
||||
if exists("*GetOCamlIndent")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
" Define some patterns:
|
||||
@@ -42,254 +44,209 @@ let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object
|
||||
let s:type = '^\s*\%(class\|let\|type\)\>.*='
|
||||
|
||||
" Skipping pattern, for comments
|
||||
function s:SkipPattern(lnum, pat)
|
||||
let def = prevnonblank(a:lnum - 1)
|
||||
while def > 0 && getline(def) =~ a:pat
|
||||
let def = prevnonblank(def - 1)
|
||||
endwhile
|
||||
return def
|
||||
function s:GetLineWithoutFullComment(lnum)
|
||||
let lnum = prevnonblank(a:lnum - 1)
|
||||
let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
|
||||
while lline =~ '^\s*$' && lnum > 0
|
||||
let lnum = prevnonblank(lnum - 1)
|
||||
let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
|
||||
endwhile
|
||||
return lnum
|
||||
endfunction
|
||||
|
||||
" Indent for ';;' to match multiple 'let'
|
||||
function s:GetInd(lnum, pat, lim)
|
||||
let llet = search(a:pat, 'bW')
|
||||
let old = indent(a:lnum)
|
||||
while llet > 0
|
||||
let old = indent(llet)
|
||||
let nb = s:SkipPattern(llet, '^\s*(\*.*\*)\s*$')
|
||||
if getline(nb) =~ a:lim
|
||||
return old
|
||||
endif
|
||||
let llet = search(a:pat, 'bW')
|
||||
endwhile
|
||||
return old
|
||||
let llet = search(a:pat, 'bW')
|
||||
let old = indent(a:lnum)
|
||||
while llet > 0
|
||||
let old = indent(llet)
|
||||
let nb = s:GetLineWithoutFullComment(llet)
|
||||
if getline(nb) =~ a:lim
|
||||
return old
|
||||
endif
|
||||
let llet = search(a:pat, 'bW')
|
||||
endwhile
|
||||
return old
|
||||
endfunction
|
||||
|
||||
" Indent pairs
|
||||
function s:FindPair(pstart, pmid, pend)
|
||||
call search(a:pend, 'bW')
|
||||
return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
|
||||
call search(a:pend, 'bW')
|
||||
return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
|
||||
endfunction
|
||||
|
||||
" Indent 'let'
|
||||
function s:FindLet(pstart, pmid, pend)
|
||||
call search(a:pend, 'bW')
|
||||
return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ s:beflet'))
|
||||
call search(a:pend, 'bW')
|
||||
return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ s:beflet'))
|
||||
endfunction
|
||||
|
||||
function GetOCamlIndent()
|
||||
" Find a non-blank line above the current line.
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
" Find a non-commented line above the current line.
|
||||
let lnum = s:GetLineWithoutFullComment(v:lnum)
|
||||
|
||||
" At the start of the file use zero indent.
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
" At the start of the file use zero indent.
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
let ind = indent(lnum)
|
||||
let lline = getline(lnum)
|
||||
let ind = indent(lnum)
|
||||
let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
|
||||
|
||||
" Return double 'shiftwidth' after lines matching:
|
||||
if lline =~ '^\s*|.*->\s*$'
|
||||
return ind + &sw + &sw
|
||||
endif
|
||||
" Return double 'shiftwidth' after lines matching:
|
||||
if lline =~ '^\s*|.*->\s*$'
|
||||
return ind + &sw + &sw
|
||||
endif
|
||||
|
||||
let line = getline(v:lnum)
|
||||
let line = getline(v:lnum)
|
||||
|
||||
" Indent if current line begins with 'end':
|
||||
if line =~ '^\s*end\>'
|
||||
return s:FindPair(s:module, '','\<end\>')
|
||||
" Indent if current line begins with 'end':
|
||||
if line =~ '^\s*end\>'
|
||||
return s:FindPair(s:module, '','\<end\>')
|
||||
|
||||
" Indent if current line begins with 'done' for 'do':
|
||||
elseif line =~ '^\s*done\>'
|
||||
return s:FindPair('\<do\>', '','\<done\>')
|
||||
" Indent if current line begins with 'done' for 'do':
|
||||
elseif line =~ '^\s*done\>'
|
||||
return s:FindPair('\<do\>', '','\<done\>')
|
||||
|
||||
" Indent if current line begins with '}' or '>}':
|
||||
elseif line =~ '^\s*\(\|>\)}'
|
||||
return s:FindPair('{', '','}')
|
||||
" Indent if current line begins with '}' or '>}':
|
||||
elseif line =~ '^\s*\(\|>\)}'
|
||||
return s:FindPair('{', '','}')
|
||||
|
||||
" Indent if current line begins with ']', '|]' or '>]':
|
||||
elseif line =~ '^\s*\(\||\|>\)\]'
|
||||
return s:FindPair('\[', '','\]')
|
||||
" Indent if current line begins with ']', '|]' or '>]':
|
||||
elseif line =~ '^\s*\(\||\|>\)\]'
|
||||
return s:FindPair('\[', '','\]')
|
||||
|
||||
" Indent if current line begins with ')':
|
||||
elseif line =~ '^\s*)'
|
||||
return s:FindPair('(', '',')')
|
||||
" Indent if current line begins with ')':
|
||||
elseif line =~ '^\s*)'
|
||||
return s:FindPair('(', '',')')
|
||||
|
||||
" Indent if current line begins with 'let':
|
||||
elseif line =~ '^\s*let\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim . '\|' . s:beflet
|
||||
return s:FindLet(s:type, '','\<let\s*$')
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'let':
|
||||
elseif line =~ '^\s*let\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim . '\|' . s:beflet
|
||||
return s:FindLet(s:type, '','\<let\s*$')
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'class' or 'type':
|
||||
elseif line =~ '^\s*\(class\|type\)\>'
|
||||
if lline !~ s:lim . '\|\<and\s*$\|' . s:letlim
|
||||
return s:FindLet(s:type, '','\<\(class\|type\)\s*$')
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'class' or 'type':
|
||||
elseif line =~ '^\s*\(class\|type\)\>'
|
||||
if lline !~ s:lim . '\|\<and\s*$\|' . s:letlim
|
||||
return s:FindLet(s:type, '','\<\(class\|type\)\s*$')
|
||||
endif
|
||||
|
||||
" Indent for pattern matching:
|
||||
elseif line =~ '^\s*|'
|
||||
if lline !~ '^\s*\(|[^\]]\|\(match\|type\|with\)\>\)\|\<\(function\|parser\|private\|with\)\s*$'
|
||||
call search('|', 'bW')
|
||||
return indent(searchpair('^\s*\(match\|type\)\>\|\<\(function\|parser\|private\|with\)\s*$', '', '^\s*|', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") !~ "^\\s*|.*->"'))
|
||||
else return ind
|
||||
endif
|
||||
" Indent for pattern matching:
|
||||
elseif line =~ '^\s*|'
|
||||
if lline !~ '^\s*\(|[^\]]\|\(match\|type\|with\)\>\)\|\<\(function\|parser\|private\|with\)\s*$'
|
||||
call search('|', 'bW')
|
||||
return indent(searchpair('^\s*\(match\|type\)\>\|\<\(function\|parser\|private\|with\)\s*$', '', '^\s*|', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") !~ "^\\s*|.*->"'))
|
||||
endif
|
||||
|
||||
" Indent if current line begins with ';;':
|
||||
elseif line =~ '^\s*;;'
|
||||
if lline !~ ';;\s*$'
|
||||
return s:GetInd(v:lnum, s:letpat, s:letlim)
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with ';;':
|
||||
elseif line =~ '^\s*;;'
|
||||
if lline !~ ';;\s*$'
|
||||
return s:GetInd(v:lnum, s:letpat, s:letlim)
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'in':
|
||||
elseif line =~ '^\s*in\>'
|
||||
if lline !~ '^\s*\(let\|and\)\>'
|
||||
return s:FindPair('\<let\>', '', '\<in\>')
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'in':
|
||||
elseif line =~ '^\s*in\>'
|
||||
if lline !~ '^\s*\(let\|and\)\>'
|
||||
return s:FindPair('\<let\>', '', '\<in\>')
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'else':
|
||||
elseif line =~ '^\s*else\>'
|
||||
if lline !~ '^\s*\(if\|then\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<else\>')
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'else':
|
||||
elseif line =~ '^\s*else\>'
|
||||
if lline !~ '^\s*\(if\|then\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<else\>')
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'then':
|
||||
elseif line =~ '^\s*then\>'
|
||||
if lline !~ '^\s*\(if\|else\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<then\>')
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'then':
|
||||
elseif line =~ '^\s*then\>'
|
||||
if lline !~ '^\s*\(if\|else\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<then\>')
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'and':
|
||||
elseif line =~ '^\s*and\>'
|
||||
if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
|
||||
return ind - &sw
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'and':
|
||||
elseif line =~ '^\s*and\>'
|
||||
if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
|
||||
return ind - &sw
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'with':
|
||||
elseif line =~ '^\s*with\>'
|
||||
if lline !~ '^\s*\(match\|try\)\>'
|
||||
return s:FindPair('\<\%(match\|try\)\>', '','\<with\>')
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'with':
|
||||
elseif line =~ '^\s*with\>'
|
||||
if lline !~ '^\s*\(match\|try\)\>'
|
||||
return s:FindPair('\<\%(match\|try\)\>', '','\<with\>')
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'exception':
|
||||
elseif line =~ '^\s*exception\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim
|
||||
return indent(search('^\s*\(\(external\|include\|open\|type\)\>\|val\>.*:\)', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'exception', 'external', 'include' or
|
||||
" 'open':
|
||||
elseif line =~ '^\s*\(exception\|external\|include\|open\)\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim
|
||||
call search(line)
|
||||
return indent(search('^\s*\(\(exception\|external\|include\|open\|type\)\>\|val\>.*:\)', 'bW'))
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'external':
|
||||
elseif line =~ '^\s*external\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim
|
||||
return indent(search('^\s*\(\(exception\|external\|include\|open\|type\)\>\|val\>.*:\)', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'val':
|
||||
elseif line =~ '^\s*val\>'
|
||||
if lline !~ '^\s*\(exception\|external\|include\|open\)\>\|' . s:obj . '\|' . s:letlim
|
||||
return indent(search('^\s*\(\(exception\|include\|initializer\|method\|open\|type\|val\)\>\|external\>.*:\)', 'bW'))
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'include':
|
||||
elseif line =~ '^\s*include\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim
|
||||
return indent(search('^\s*\(\(exception\|external\|open\|type\)\>\|val\>.*:\)', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Indent if current line begins with 'constraint', 'inherit', 'initializer'
|
||||
" or 'method':
|
||||
elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
|
||||
if lline !~ s:obj
|
||||
return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + &sw
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'open':
|
||||
elseif line =~ '^\s*open\>'
|
||||
if lline !~ s:lim . '\|' . s:letlim
|
||||
return indent(search('^\s*\(\(exception\|external\|include\|type\)\>\|val\>.*:\)', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
endif
|
||||
|
||||
" Indent if current line begins with 'val':
|
||||
elseif line =~ '^\s*val\>'
|
||||
if lline !~ '^\s*\(exception\|external\|include\|open\)\>\|' . s:obj . '\|' . s:letlim
|
||||
return indent(search('^\s*\(\(exception\|include\|initializer\|method\|open\|type\|val\)\>\|external\>.*:\)', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Add a 'shiftwidth' after lines ending with:
|
||||
if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
|
||||
let ind = ind + &sw
|
||||
|
||||
" Indent if current line begins with 'constraint':
|
||||
elseif line =~ '^\s*constraint\>'
|
||||
if lline !~ s:obj
|
||||
return indent(search('^\s*\(inherit\|initializer\|method\|val\)\>', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Back to normal indent after lines ending with ';;':
|
||||
elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
|
||||
let ind = s:GetInd(v:lnum, s:letpat, s:letlim)
|
||||
|
||||
" Indent if current line begins with 'inherit':
|
||||
elseif line =~ '^\s*inherit\>'
|
||||
if lline !~ s:obj
|
||||
return indent(search('^\s*\(constraint\|initializer\|method\|val\)\>', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Back to normal indent after lines ending with 'end':
|
||||
elseif lline =~ '\<end\s*$'
|
||||
let ind = s:FindPair(s:module, '','\<end\>')
|
||||
|
||||
" Indent if current line begins with 'inherit':
|
||||
elseif line =~ '^\s*initializer\>'
|
||||
if lline !~ s:obj
|
||||
return indent(search('^\s*\(constraint\|inherit\|method\|val\)\>', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Back to normal indent after lines ending with 'in':
|
||||
elseif lline =~ '\<in\s*$' && lline !~ '^\s*in\>'
|
||||
let ind = s:FindPair('\<let\>', '', '\<in\>')
|
||||
|
||||
" Indent if current line begins with 'method':
|
||||
elseif line =~ '^\s*method\>'
|
||||
if lline !~ s:obj
|
||||
return indent(search('^\s*\(\(constraint\|inherit\|initializer\|val\)\>\|method\>.*\(:\|=\)\)', 'bW'))
|
||||
else return ind
|
||||
endif
|
||||
" Back to normal indent after lines ending with 'done':
|
||||
elseif lline =~ '\<done\s*$'
|
||||
let ind = s:FindPair('\<do\>', '','\<done\>')
|
||||
|
||||
endif
|
||||
" Back to normal indent after lines ending with '}' or '>}':
|
||||
elseif lline =~ '\(\|>\)}\s*$'
|
||||
let ind = s:FindPair('{', '','}')
|
||||
|
||||
" Add a 'shiftwidth' after lines ending with:
|
||||
if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
|
||||
let ind = ind + &sw
|
||||
" Back to normal indent after lines ending with ']', '|]' or '>]':
|
||||
elseif lline =~ '\(\||\|>\)\]\s*$'
|
||||
let ind = s:FindPair('\[', '','\]')
|
||||
|
||||
" Back to normal indent after lines ending with ';;':
|
||||
elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
|
||||
let ind = s:GetInd(v:lnum, s:letpat, s:letlim)
|
||||
" Back to normal indent after comments:
|
||||
elseif lline =~ '\*)\s*$'
|
||||
call search('\*)', 'bW')
|
||||
let ind = indent(searchpair('(\*', '', '\*)', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
|
||||
|
||||
" Back to normal indent after lines ending with 'end':
|
||||
elseif lline =~ '\<end\s*$'
|
||||
let ind = s:FindPair(s:module, '','\<end\>')
|
||||
" Back to normal indent after lines ending with ')':
|
||||
elseif lline =~ ')\s*$'
|
||||
let ind = s:FindPair('(', '',')')
|
||||
|
||||
" Back to normal indent after lines ending with 'in':
|
||||
elseif lline =~ '\<in\s*$' && lline !~ '^\s*in\>'
|
||||
let ind = s:FindPair('\<let\>', '', '\<in\>')
|
||||
" If this is a multiline comment then align '*':
|
||||
elseif lline =~ '^\s*(\*' && line =~ '^\s*\*'
|
||||
let ind = ind + 1
|
||||
|
||||
" Back to normal indent after lines ending with 'done':
|
||||
elseif lline =~ '\<done\s*$'
|
||||
let ind = s:FindPair('\<do\>', '','\<done\>')
|
||||
endif
|
||||
|
||||
" Back to normal indent after lines ending with '}' or '>}':
|
||||
elseif lline =~ '\(\|>\)}\s*$'
|
||||
let ind = s:FindPair('{', '','}')
|
||||
" Subtract a 'shiftwidth' after lines matching 'match ... with parser':
|
||||
if lline =~ '\<match\>.*\<with\>\s*\<parser\s*$'
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
|
||||
" Back to normal indent after lines ending with ']', '|]' or '>]':
|
||||
elseif lline =~ '\(\||\|>\)\]\s*$'
|
||||
let ind = s:FindPair('\[', '','\]')
|
||||
|
||||
" Back to normal indent after comments:
|
||||
elseif lline =~ '\*)\s*$'
|
||||
call search('\*)', 'bW')
|
||||
let ind = indent(searchpair('(\*', '', '\*)', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
|
||||
|
||||
" Back to normal indent after lines ending with ')':
|
||||
elseif lline =~ ')\s*$'
|
||||
let ind = s:FindPair('(', '',')')
|
||||
|
||||
endif
|
||||
|
||||
" Subtract a 'shiftwidth' after lines matching 'match ... with parser':
|
||||
if lline =~ '^\s*match\>.*\<with\>\s*\<parser\s*$'
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
|
||||
return ind
|
||||
return ind
|
||||
|
||||
endfunction
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Perl
|
||||
" Author: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
|
||||
" URL: http://rgarciasuarez.free.fr/vim/indent/perl.vim
|
||||
" Last Change: 2005 Jul 15
|
||||
" Last Change: 2005 Sep 07
|
||||
|
||||
" Suggestions and improvements by :
|
||||
" Aaron J. Sherman (use syntax for hints)
|
||||
@@ -26,7 +26,7 @@ endif
|
||||
let b:did_indent = 1
|
||||
|
||||
" Is syntax highlighting active ?
|
||||
let b:indent_use_syntax = has("syntax") && &syntax == "perl"
|
||||
let b:indent_use_syntax = has("syntax")
|
||||
|
||||
setlocal indentexpr=GetPerlIndent()
|
||||
setlocal indentkeys+=0=,0),0=or,0=and
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,14 @@
|
||||
" Vim indent file
|
||||
" Language: Ruby
|
||||
" Maintainer: Gavin Sinclair <gsinclair@soyabean.com.au>
|
||||
" Last Change: 2003 May 11
|
||||
" URL: www.soyabean.com.au/gavin/vim/index.html
|
||||
" Changes: (since vim 6.1)
|
||||
" - indentation after a line ending in comma, etc, (even in a comment) was
|
||||
" broken, now fixed (2002/08/14)
|
||||
" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.au>
|
||||
" Developer: Nikolai Weibull <source at pcppopper.org>
|
||||
" Info: $Id$
|
||||
" URL: http://vim-ruby.rubyforge.org
|
||||
" Anon CVS: See above site
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
" 0. Initialization {{{1
|
||||
" =================
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
@@ -13,55 +16,347 @@ if exists("b:did_indent")
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
" Now, set up our indentation expression and keys that trigger it.
|
||||
setlocal indentexpr=GetRubyIndent()
|
||||
setlocal nolisp
|
||||
setlocal nosmartindent
|
||||
setlocal autoindent
|
||||
setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue
|
||||
setlocal indentkeys=0{,0},0),0],!^F,o,O,e
|
||||
setlocal indentkeys+==end,=elsif,=when,=ensure,=rescue,==begin,==end
|
||||
|
||||
" Only define the function once.
|
||||
if exists("*GetRubyIndent")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" 1. Variables {{{1
|
||||
" ============
|
||||
|
||||
" Regex of syntax group names that are or delimit string or are comments.
|
||||
let s:syng_strcom = '\<ruby\%(String\|StringDelimiter\|ASCIICode' .
|
||||
\ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>'
|
||||
|
||||
" Regex of syntax group names that are strings.
|
||||
let s:syng_string =
|
||||
\ '\<ruby\%(String\|StringDelimiter\|Interpolation\|NoInterpolation\|Escape\)\>'
|
||||
|
||||
" Regex of syntax group names that are strings or documentation.
|
||||
let s:syng_stringdoc =
|
||||
\'\<ruby\%(String\|StringDelimiter\|Interpolation\|NoInterpolation\|Escape\|Documentation\)\>'
|
||||
|
||||
" Expression used to check whether we should skip a match with searchpair().
|
||||
let s:skip_expr =
|
||||
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '".s:syng_strcom."'"
|
||||
|
||||
" Regex used for words that, at the start of a line, add a level of indent.
|
||||
let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
|
||||
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' .
|
||||
\ '\|rescue\)\>' .
|
||||
\ '\|\%([*+/,=:-]\|<<\|>>\)\s*\zs' .
|
||||
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\)\>'
|
||||
|
||||
" Regex used for words that, at the start of a line, remove a level of indent.
|
||||
let s:ruby_deindent_keywords =
|
||||
\ '^\s*\zs\<\%(ensure\|else\|rescue\|elsif\|when\|end\)\>'
|
||||
|
||||
" Regex that defines the start-match for the 'end' keyword.
|
||||
"let s:end_start_regex = '\%(^\|[^.]\)\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\|do\)\>'
|
||||
" TODO: the do here should be restricted somewhat (only at end of line)?
|
||||
let s:end_start_regex = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
|
||||
\ '\|while\|until\|case\|unless\|begin\)\>' .
|
||||
\ '\|\%([*+/,=:-]\|<<\|>>\)\s*\zs' .
|
||||
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\)\>' .
|
||||
\ '\|\<do\>'
|
||||
|
||||
" Regex that defines the middle-match for the 'end' keyword.
|
||||
let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue\>\|when\|elsif\)\>'
|
||||
|
||||
" Regex that defines the end-match for the 'end' keyword.
|
||||
let s:end_end_regex = '\%(^\|[^.:]\)\@<=\<end\>'
|
||||
|
||||
" Expression used for searchpair() call for finding match for 'end' keyword.
|
||||
let s:end_skip_expr = s:skip_expr .
|
||||
\ ' || (expand("<cword>") == "do"' .
|
||||
\ ' && getline(".") =~ "^\\s*\\<while\\|until\\|for\\>")'
|
||||
|
||||
" Regex that defines continuation lines, not including (, {, or [.
|
||||
let s:continuation_regex = '\%([\\*+/.,=:-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that defines continuation lines.
|
||||
" TODO: this needs to deal with if ...: and so on
|
||||
let s:continuation_regex2 =
|
||||
\ '\%([\\*+/.,=:({[-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that defines blocks.
|
||||
let s:block_regex =
|
||||
\ '\%(\<do\>\|{\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=\s*\%(#.*\)\=$'
|
||||
|
||||
" 2. Auxiliary Functions {{{1
|
||||
" ======================
|
||||
|
||||
" Check if the character at lnum:col is inside a string, comment, or is ascii.
|
||||
function s:IsInStringOrComment(lnum, col)
|
||||
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom
|
||||
endfunction
|
||||
|
||||
" Check if the character at lnum:col is inside a string.
|
||||
function s:IsInString(lnum, col)
|
||||
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_string
|
||||
endfunction
|
||||
|
||||
" Check if the character at lnum:col is inside a string or documentation.
|
||||
function s:IsInStringOrDocumentation(lnum, col)
|
||||
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_stringdoc
|
||||
endfunction
|
||||
|
||||
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
|
||||
function s:PrevNonBlankNonString(lnum)
|
||||
let in_block = 0
|
||||
let lnum = prevnonblank(a:lnum)
|
||||
while lnum > 0
|
||||
" Go in and out of blocks comments as necessary.
|
||||
" If the line isn't empty (with opt. comment) or in a string, end search.
|
||||
let line = getline(lnum)
|
||||
if line =~ '^=begin$'
|
||||
if in_block
|
||||
let in_block = 0
|
||||
else
|
||||
break
|
||||
endif
|
||||
elseif !in_block && line =~ '^=end$'
|
||||
let in_block = 1
|
||||
elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1)
|
||||
\ && s:IsInStringOrComment(lnum, strlen(line)))
|
||||
break
|
||||
endif
|
||||
let lnum = prevnonblank(lnum - 1)
|
||||
endwhile
|
||||
return lnum
|
||||
endfunction
|
||||
|
||||
" Find line above 'lnum' that started the continuation 'lnum' may be part of.
|
||||
function s:GetMSL(lnum)
|
||||
" Start on the line we're at and use its indent.
|
||||
let msl = a:lnum
|
||||
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
||||
while lnum > 0
|
||||
" If we have a continuation line, or we're in a string, use line as MSL.
|
||||
" Otherwise, terminate search as we have found our MSL already.
|
||||
let line = getline(lnum)
|
||||
let col = match(line, s:continuation_regex2) + 1
|
||||
if (col > 0 && !s:IsInStringOrComment(lnum, col))
|
||||
\ || s:IsInString(lnum, strlen(line))
|
||||
let msl = lnum
|
||||
else
|
||||
break
|
||||
endif
|
||||
let lnum = s:PrevNonBlankNonString(lnum - 1)
|
||||
endwhile
|
||||
return msl
|
||||
endfunction
|
||||
|
||||
" Check if line 'lnum' has more opening brackets than closing ones.
|
||||
function s:LineHasOpeningBrackets(lnum)
|
||||
let open_0 = 0
|
||||
let open_2 = 0
|
||||
let open_4 = 0
|
||||
let line = getline(a:lnum)
|
||||
let pos = match(line, '[][(){}]', 0)
|
||||
while pos != -1
|
||||
if !s:IsInStringOrComment(a:lnum, pos + 1)
|
||||
let idx = stridx('(){}[]', line[pos])
|
||||
if idx % 2 == 0
|
||||
let open_{idx} = open_{idx} + 1
|
||||
else
|
||||
let open_{idx - 1} = open_{idx - 1} - 1
|
||||
endif
|
||||
endif
|
||||
let pos = match(line, '[][(){}]', pos + 1)
|
||||
endwhile
|
||||
return (open_0 > 0) . (open_2 > 0) . (open_4 > 0)
|
||||
endfunction
|
||||
|
||||
function s:Match(lnum, regex)
|
||||
let col = match(getline(a:lnum), a:regex) + 1
|
||||
return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
|
||||
endfunction
|
||||
|
||||
function s:MatchLast(lnum, regex)
|
||||
let line = getline(a:lnum)
|
||||
let col = match(line, '.*\zs' . a:regex)
|
||||
while col != -1 && s:IsInStringOrComment(a:lnum, col)
|
||||
let line = strpart(line, 0, col)
|
||||
let col = match(line, '.*' . a:regex)
|
||||
endwhile
|
||||
return col + 1
|
||||
endfunction
|
||||
|
||||
" 3. GetRubyIndent Function {{{1
|
||||
" =========================
|
||||
|
||||
function GetRubyIndent()
|
||||
" Find a non-blank line above the current line.
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
" 3.1. Setup {{{2
|
||||
" ----------
|
||||
|
||||
" Set up variables for restoring position in file. Could use v:lnum here.
|
||||
let vcol = col('.')
|
||||
|
||||
" 3.2. Work on the current line {{{2
|
||||
" -----------------------------
|
||||
|
||||
" Get the current line.
|
||||
let line = getline(v:lnum)
|
||||
let ind = -1
|
||||
|
||||
" If we got a closing bracket on an empty line, find its match and indent
|
||||
" according to it. For parentheses we indent to its column - 1, for the
|
||||
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
||||
let col = matchend(line, '^\s*[]})]')
|
||||
if col > 0 && !s:IsInStringOrComment(v:lnum, col)
|
||||
call cursor(v:lnum, col)
|
||||
let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
|
||||
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
|
||||
let ind = line[col-1]==')' ? virtcol('.')-1 : indent(s:GetMSL(line('.')))
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" If we have a =begin or =end set indent to first column.
|
||||
if match(line, '^\s*\%(=begin\|=end\)$') != -1
|
||||
return 0
|
||||
endif
|
||||
|
||||
" If we have a deindenting keyword, find its match and indent to its level.
|
||||
" TODO: this is messy
|
||||
if s:Match(v:lnum, s:ruby_deindent_keywords)
|
||||
call cursor(v:lnum, 1)
|
||||
if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
|
||||
\ s:end_skip_expr) > 0
|
||||
let line = getline('.')
|
||||
if strpart(line, 0, col('.') - 1) =~ '=\s*$' &&
|
||||
\ strpart(line, col('.') - 1, 2) !~ 'do'
|
||||
let ind = virtcol('.') - 1
|
||||
else
|
||||
let ind = indent('.')
|
||||
endif
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" If we are in a multi-line string or line-comment, don't do anything to it.
|
||||
if s:IsInStringOrDocumentation(v:lnum, matchend(line, '^\s*') + 1)
|
||||
return indent('.')
|
||||
endif
|
||||
|
||||
" 3.3. Work on the previous line. {{{2
|
||||
" -------------------------------
|
||||
|
||||
" Find a non-blank, non-multi-line string line above the current line.
|
||||
let lnum = s:PrevNonBlankNonString(v:lnum - 1)
|
||||
|
||||
" At the start of the file use zero indent.
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
" If the line trailed with [*+,.(] - but not in a comment - trust the user
|
||||
if getline(lnum) =~ '\(\[^#\].*\)?\(\*\|\.\|+\|,\|(\)\(\s*#.*\)\=$'
|
||||
return -1
|
||||
endif
|
||||
|
||||
" Add a 'shiftwidth' after lines beginning with:
|
||||
" module, class, dev, if, for, while, until, else, elsif, case, when, {
|
||||
" Set up variables for current line.
|
||||
let line = getline(lnum)
|
||||
let ind = indent(lnum)
|
||||
let flag = 0
|
||||
if getline(lnum) =~ '^\s*\(module\>\|class\>\|def\>\|if\>\|for\>\|while\>\|until\>\|else\>\|elsif\>\|case\>\|when\>\|unless\|begin\|ensure\>\|rescue\>\)'
|
||||
\ || getline(lnum) =~ '{\s*$'
|
||||
\ || getline(lnum) =~ '\({\|\<do\>\).*|.*|\s*$'
|
||||
\ || getline(lnum) =~ '\<do\>\(\s*#.*\)\=$'
|
||||
let ind = ind + &sw
|
||||
let flag = 1
|
||||
|
||||
" If the previous line ended with a block opening, add a level of indent.
|
||||
if s:Match(lnum, s:block_regex)
|
||||
return indent(s:GetMSL(lnum)) + &sw
|
||||
endif
|
||||
|
||||
" Subtract a 'shiftwidth' after lines ending with
|
||||
" "end" when they begin with while, if, for, until
|
||||
if flag == 1 && getline(lnum) =~ '\<end\>\(\s*#.*\)\=$'
|
||||
let ind = ind - &sw
|
||||
" If the previous line contained an opening bracket, and we are still in it,
|
||||
" add indent depending on the bracket type.
|
||||
if line =~ '[[({]'
|
||||
let counts = s:LineHasOpeningBrackets(lnum)
|
||||
if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
|
||||
return virtcol('.')
|
||||
elseif counts[1] == '1' || counts[2] == '1'
|
||||
return ind + &sw
|
||||
else
|
||||
call cursor(v:lnum, vcol)
|
||||
end
|
||||
endif
|
||||
|
||||
" Subtract a 'shiftwidth' on end, else and, elsif, when and }
|
||||
if getline(v:lnum) =~ '^\s*\(end\>\|else\>\|elsif\>\|when\>\|ensure\>\|rescue\>\|}\)'
|
||||
let ind = ind - &sw
|
||||
" If the previous line ended with an "end", match that "end"s beginning's
|
||||
" indent.
|
||||
let col = s:Match(lnum, '\%(^\|[^.]\)\<end\>\s*\%(#.*\)\=$')
|
||||
if col > 0
|
||||
call cursor(lnum, col)
|
||||
if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW',
|
||||
\ s:end_skip_expr) > 0
|
||||
let n = line('.')
|
||||
let ind = indent('.')
|
||||
let msl = s:GetMSL(n)
|
||||
if msl != n
|
||||
let ind = indent(msl)
|
||||
end
|
||||
return ind
|
||||
endif
|
||||
end
|
||||
|
||||
let col = s:Match(lnum, s:ruby_indent_keywords)
|
||||
if col > 0
|
||||
call cursor(lnum, col)
|
||||
let ind = virtcol('.') - 1 + &sw
|
||||
" let ind = indent(lnum) + &sw
|
||||
" TODO: make this better (we need to count them) (or, if a searchpair
|
||||
" fails, we know that something is lacking an end and thus we indent a
|
||||
" level
|
||||
if s:Match(lnum, s:end_end_regex)
|
||||
let ind = indent('.')
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" 3.4. Work on the MSL line. {{{2
|
||||
" --------------------------
|
||||
|
||||
" Set up variables to use and search for MSL to the previous line.
|
||||
let p_lnum = lnum
|
||||
let lnum = s:GetMSL(lnum)
|
||||
|
||||
" If the previous line wasn't a MSL and is continuation return its indent.
|
||||
" TODO: the || s:IsInString() thing worries me a bit.
|
||||
if p_lnum != lnum
|
||||
if s:Match(p_lnum,s:continuation_regex)||s:IsInString(p_lnum,strlen(line))
|
||||
return ind
|
||||
endif
|
||||
endif
|
||||
|
||||
" Set up more variables, now that we know we wasn't continuation bound.
|
||||
let line = getline(lnum)
|
||||
let msl_ind = indent(lnum)
|
||||
|
||||
" If the MSL line had an indenting keyword in it, add a level of indent.
|
||||
" TODO: this does not take into account contrived things such as
|
||||
" module Foo; class Bar; end
|
||||
if s:Match(lnum, s:ruby_indent_keywords)
|
||||
let ind = msl_ind + &sw
|
||||
if s:Match(lnum, s:end_end_regex)
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" If the previous line ended with [*+/.-=], indent one extra level.
|
||||
if s:Match(lnum, s:continuation_regex)
|
||||
if lnum == p_lnum
|
||||
let ind = msl_ind + &sw
|
||||
else
|
||||
let ind = msl_ind
|
||||
endif
|
||||
endif
|
||||
|
||||
" }}}2
|
||||
|
||||
return ind
|
||||
endfunction
|
||||
|
||||
" vim:sw=2
|
||||
" }}}1
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
215
runtime/indent/sml.vim
Normal file
215
runtime/indent/sml.vim
Normal file
@@ -0,0 +1,215 @@
|
||||
" Vim indent file
|
||||
" Language: SML
|
||||
" Maintainer: Saikat Guha <sg266@cornell.edu>
|
||||
" Hubert Chao <hc85@cornell.edu>
|
||||
" Original OCaml Version:
|
||||
" Jean-Francois Yuen <jfyuen@ifrance.com>
|
||||
" Mike Leary <leary@nwlink.com>
|
||||
" Markus Mottl <markus@oefai.at>
|
||||
" OCaml URL: http://www.oefai.at/~markus/vim/indent/ocaml.vim
|
||||
" Last Change: 2003 Jan 04 - Adapted to SML
|
||||
" 2002 Nov 06 - Some fixes (JY)
|
||||
" 2002 Oct 28 - Fixed bug with indentation of ']' (MM)
|
||||
" 2002 Oct 22 - Major rewrite (JY)
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal expandtab
|
||||
setlocal indentexpr=GetSMLIndent()
|
||||
setlocal indentkeys+=0=and,0=else,0=end,0=handle,0=if,0=in,0=let,0=then,0=val,0=fun,0=\|,0=*),0)
|
||||
setlocal nolisp
|
||||
setlocal nosmartindent
|
||||
setlocal textwidth=80
|
||||
setlocal shiftwidth=2
|
||||
|
||||
" Comment formatting
|
||||
if (has("comments"))
|
||||
set comments=sr:(*,mb:*,ex:*)
|
||||
set fo=cqort
|
||||
endif
|
||||
|
||||
" Only define the function once.
|
||||
"if exists("*GetSMLIndent")
|
||||
"finish
|
||||
"endif
|
||||
|
||||
" Define some patterns:
|
||||
let s:beflet = '^\s*\(initializer\|method\|try\)\|\(\<\(begin\|do\|else\|in\|then\|try\)\|->\|;\)\s*$'
|
||||
let s:letpat = '^\s*\(let\|type\|module\|class\|open\|exception\|val\|include\|external\)\>'
|
||||
let s:letlim = '\(\<\(sig\|struct\)\|;;\)\s*$'
|
||||
let s:lim = '^\s*\(exception\|external\|include\|let\|module\|open\|type\|val\)\>'
|
||||
let s:module = '\<\%(let\|sig\|struct\)\>'
|
||||
let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object\|object\s*(.*)\)\s*$'
|
||||
let s:type = '^\s*\%(let\|type\)\>.*='
|
||||
let s:val = '^\s*\(val\|external\)\>.*:'
|
||||
|
||||
" Skipping pattern, for comments
|
||||
function! s:SkipPattern(lnum, pat)
|
||||
let def = prevnonblank(a:lnum - 1)
|
||||
while def > 0 && getline(def) =~ a:pat
|
||||
let def = prevnonblank(def - 1)
|
||||
endwhile
|
||||
return def
|
||||
endfunction
|
||||
|
||||
" Indent for ';;' to match multiple 'let'
|
||||
function! s:GetInd(lnum, pat, lim)
|
||||
let llet = search(a:pat, 'bW')
|
||||
let old = indent(a:lnum)
|
||||
while llet > 0
|
||||
let old = indent(llet)
|
||||
let nb = s:SkipPattern(llet, '^\s*(\*.*\*)\s*$')
|
||||
if getline(nb) =~ a:lim
|
||||
return old
|
||||
endif
|
||||
let llet = search(a:pat, 'bW')
|
||||
endwhile
|
||||
return old
|
||||
endfunction
|
||||
|
||||
" Indent pairs
|
||||
function! s:FindPair(pstart, pmid, pend)
|
||||
call search(a:pend, 'bW')
|
||||
" return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
|
||||
let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')
|
||||
if lno == -1
|
||||
return indent(lno)
|
||||
else
|
||||
return col(".") - 1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:FindLet(pstart, pmid, pend)
|
||||
call search(a:pend, 'bW')
|
||||
" return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
|
||||
let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')
|
||||
let moduleLine = getline(lno)
|
||||
if lno == -1 || moduleLine =~ '^\s*\(fun\|structure\|signature\)\>'
|
||||
return indent(lno)
|
||||
else
|
||||
return col(".") - 1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Indent 'let'
|
||||
"function! s:FindLet(pstart, pmid, pend)
|
||||
" call search(a:pend, 'bW')
|
||||
" return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ "^\\s*let\\>.*=\\s*$\\|" . s:beflet'))
|
||||
"endfunction
|
||||
|
||||
function! GetSMLIndent()
|
||||
" Find a non-blank line above the current line.
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
|
||||
" At the start of the file use zero indent.
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
let ind = indent(lnum)
|
||||
let lline = getline(lnum)
|
||||
|
||||
" Return double 'shiftwidth' after lines matching:
|
||||
if lline =~ '^\s*|.*=>\s*$'
|
||||
return ind + &sw + &sw
|
||||
elseif lline =~ '^\s*val\>.*=\s*$'
|
||||
return ind + &sw
|
||||
endif
|
||||
|
||||
let line = getline(v:lnum)
|
||||
|
||||
" Indent lines starting with 'end' to matching module
|
||||
if line =~ '^\s*end\>'
|
||||
return s:FindLet(s:module, '', '\<end\>')
|
||||
|
||||
" Match 'else' with 'if'
|
||||
elseif line =~ '^\s*else\>'
|
||||
if lline !~ '^\s*\(if\|else\|then\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<then\>')
|
||||
else return ind
|
||||
endif
|
||||
|
||||
" Match 'then' with 'if'
|
||||
elseif line =~ '^\s*then\>'
|
||||
if lline !~ '^\s*\(if\|else\|then\)\>'
|
||||
return s:FindPair('\<if\>', '', '\<then\>')
|
||||
else return ind
|
||||
endif
|
||||
|
||||
" Indent if current line begins with ']'
|
||||
elseif line =~ '^\s*\]'
|
||||
return s:FindPair('\[','','\]')
|
||||
|
||||
" Indent current line starting with 'in' to last matching 'let'
|
||||
elseif line =~ '^\s*in\>'
|
||||
let ind = s:FindLet('\<let\>','','\<in\>')
|
||||
|
||||
" Indent from last matching module if line matches:
|
||||
elseif line =~ '^\s*\(fun\|val\|open\|structure\|and\|datatype\|type\|exception\)\>'
|
||||
cursor(lnum,1)
|
||||
let lastModule = indent(searchpair(s:module, '', '\<end\>', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
|
||||
if lastModule == -1
|
||||
return 0
|
||||
else
|
||||
return lastModule + &sw
|
||||
endif
|
||||
|
||||
" Indent lines starting with '|' from matching 'case', 'handle'
|
||||
elseif line =~ '^\s*|'
|
||||
" cursor(lnum,1)
|
||||
let lastSwitch = search('\<\(case\|handle\|fun\|datatype\)\>','bW')
|
||||
let switchLine = getline(lastSwitch)
|
||||
let switchLineIndent = indent(lastSwitch)
|
||||
if lline =~ '^\s*|'
|
||||
return ind
|
||||
endif
|
||||
if switchLine =~ '\<case\>'
|
||||
return col(".") + 2
|
||||
elseif switchLine =~ '\<handle\>'
|
||||
return switchLineIndent + &sw
|
||||
elseif switchLine =~ '\<datatype\>'
|
||||
call search('=')
|
||||
return col(".") - 1
|
||||
else
|
||||
return switchLineIndent + 2
|
||||
endif
|
||||
|
||||
|
||||
" Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',
|
||||
" 'in'
|
||||
elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'
|
||||
let ind = ind + &sw
|
||||
|
||||
" Indent if last line ends with 'of', align from 'case'
|
||||
elseif lline =~ '\<\(of\)\s*$'
|
||||
call search('\<case\>',"bW")
|
||||
let ind = col(".")+4
|
||||
|
||||
" Indent if current line starts with 'of'
|
||||
elseif line =~ '^\s*of\>'
|
||||
call search('\<case\>',"bW")
|
||||
let ind = col(".")+1
|
||||
|
||||
|
||||
" Indent if last line starts with 'fun', 'case', 'fn'
|
||||
elseif lline =~ '^\s*\(fun\|fn\|case\)\>'
|
||||
let ind = ind + &sw
|
||||
|
||||
endif
|
||||
|
||||
" Don't indent 'let' if last line started with 'fun', 'fn'
|
||||
if line =~ '^\s*let\>'
|
||||
if lline =~ '^\s*\(fun\|fn\)'
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
endif
|
||||
|
||||
return ind
|
||||
|
||||
endfunction
|
||||
|
||||
" vim:sw=2
|
||||
9314
runtime/kde-tips
9314
runtime/kde-tips
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,8 @@
|
||||
" Vim Keymap file for Persian Standard Keyboard Layout
|
||||
" Maintainers: Behnam Esfahbod <behnam@bamdad.org>,
|
||||
" Amir Hedayaty <amir@bamdad.org>
|
||||
" Last Change: 2004 May 16
|
||||
" Maintainers: Behnam 'ZWNJ' Esfahbod <behnam@zwnj.org>,
|
||||
" Amir Hedayaty <hedayaty@gmail.com>
|
||||
" Last Change: 2005 Nov 30
|
||||
|
||||
" All characters are given literally, conversion to another encoding (e.g.,
|
||||
" UTF-8) should work.
|
||||
scriptencoding utf-8
|
||||
|
||||
" Use this short name in the status line.
|
||||
|
||||
572
runtime/keymap/tamil_tscii.vim
Normal file
572
runtime/keymap/tamil_tscii.vim
Normal file
@@ -0,0 +1,572 @@
|
||||
" Keymap file for the editing Tamil language files in TSCII encoding.
|
||||
"
|
||||
" Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
|
||||
" Last updated: August 4, 2005
|
||||
"
|
||||
" You will need a fixed width TSCII font to use this encoding. The
|
||||
" Avarangal TSCII fixed width font (TSC_AvarangalFxd) is used to test
|
||||
" this keymap.
|
||||
"
|
||||
" Visit http://www.tscii.org for more information about the TSCII
|
||||
" encoding.
|
||||
"
|
||||
let b:keymap_name = "tamil_tscii"
|
||||
|
||||
loadkeymap
|
||||
|
||||
" Uyir (Vowels) letters
|
||||
a <char-171>
|
||||
aa <char-172>
|
||||
A <char-172>
|
||||
i <char-173>
|
||||
ii <char-174>
|
||||
I <char-174>
|
||||
u <char-175>
|
||||
uu <char-176>
|
||||
U <char-176>
|
||||
e <char-177>
|
||||
ee <char-178>
|
||||
E <char-178>
|
||||
ai <char-179>
|
||||
o <char-180>
|
||||
oo <char-181>
|
||||
O <char-181>
|
||||
au <char-182>
|
||||
q <char-183>
|
||||
|
||||
" mey (Consonants) letters
|
||||
k <char-236>
|
||||
ka <char-184>
|
||||
kaa <char-184><char-161>
|
||||
kA <char-184><char-161>
|
||||
ki <char-184><char-162>
|
||||
kii <char-184><char-163>
|
||||
kI <char-184><char-163>
|
||||
ku <char-204>
|
||||
kuu <char-220>
|
||||
kU <char-220>
|
||||
ke <char-166><char-184>
|
||||
kee <char-167><char-184>
|
||||
kE <char-167><char-184>
|
||||
kai <char-168><char-184>
|
||||
ko <char-166><char-184><char-161>
|
||||
koo <char-167><char-184><char-161>
|
||||
kO <char-167><char-184><char-161>
|
||||
kau <char-166><char-184><char-199>
|
||||
|
||||
g <char-236>
|
||||
ga <char-184>
|
||||
gaa <char-184><char-161>
|
||||
gA <char-184><char-161>
|
||||
gi <char-184><char-162>
|
||||
gii <char-184><char-163>
|
||||
gI <char-184><char-163>
|
||||
gu <char-204>
|
||||
guu <char-220>
|
||||
gU <char-220>
|
||||
ge <char-166><char-184>
|
||||
gee <char-167><char-184>
|
||||
gE <char-167><char-184>
|
||||
gai <char-168><char-184>
|
||||
go <char-166><char-184><char-161>
|
||||
goo <char-167><char-184><char-161>
|
||||
gO <char-167><char-184><char-161>
|
||||
gau <char-166><char-184><char-199>
|
||||
|
||||
ng <char-237>
|
||||
nga <char-185>
|
||||
ngaa <char-185><char-161>
|
||||
ngA <char-185><char-161>
|
||||
ngi <char-185><char-162>
|
||||
ngii <char-185><char-163>
|
||||
ngI <char-185><char-163>
|
||||
ngu <char-153>
|
||||
nguu <char-155>
|
||||
ngU <char-155>
|
||||
nge <char-166><char-185>
|
||||
ngee <char-167><char-185>
|
||||
ngE <char-167><char-185>
|
||||
ngai <char-168><char-185>
|
||||
ngo <char-166><char-185><char-161>
|
||||
ngoo <char-167><char-185><char-161>
|
||||
ngO <char-167><char-185><char-161>
|
||||
ngau <char-166><char-185><char-199>
|
||||
|
||||
ch <char-238>
|
||||
cha <char-186>
|
||||
chaa <char-186><char-161>
|
||||
chA <char-186><char-161>
|
||||
chi <char-186><char-162>
|
||||
chii <char-186><char-163>
|
||||
chI <char-186><char-163>
|
||||
chu <char-204>
|
||||
chuu <char-221>
|
||||
chU <char-221>
|
||||
che <char-166><char-186>
|
||||
chee <char-167><char-186>
|
||||
chE <char-167><char-186>
|
||||
chai <char-168><char-186>
|
||||
cho <char-166><char-186><char-161>
|
||||
choo <char-167><char-186><char-161>
|
||||
chO <char-167><char-186><char-161>
|
||||
chau <char-166><char-186><char-199>
|
||||
|
||||
s <char-238>
|
||||
sa <char-186>
|
||||
saa <char-186><char-161>
|
||||
sA <char-186><char-161>
|
||||
si <char-186><char-162>
|
||||
sii <char-186><char-163>
|
||||
sI <char-186><char-163>
|
||||
su <char-204>
|
||||
suu <char-221>
|
||||
sU <char-221>
|
||||
se <char-166><char-186>
|
||||
see <char-167><char-186>
|
||||
sE <char-167><char-186>
|
||||
sai <char-168><char-186>
|
||||
so <char-166><char-186><char-161>
|
||||
soo <char-167><char-186><char-161>
|
||||
sO <char-167><char-186><char-161>
|
||||
sau <char-166><char-186><char-199>
|
||||
|
||||
nj <char-239>
|
||||
nja <char-187>
|
||||
njaa <char-187><char-161>
|
||||
njA <char-187><char-161>
|
||||
nji <char-187><char-162>
|
||||
njii <char-187><char-163>
|
||||
njI <char-187><char-163>
|
||||
nju <char-154>
|
||||
njuu <char-156>
|
||||
njU <char-156>
|
||||
nje <char-166><char-187>
|
||||
njee <char-167><char-187>
|
||||
njE <char-167><char-187>
|
||||
njai <char-168><char-187>
|
||||
njo <char-166><char-187><char-161>
|
||||
njoo <char-167><char-187><char-161>
|
||||
njO <char-167><char-187><char-161>
|
||||
njau <char-166><char-187><char-199>
|
||||
|
||||
t <char-240>
|
||||
ta <char-188>
|
||||
taa <char-188><char-161>
|
||||
tA <char-188><char-161>
|
||||
ti <char-202>
|
||||
tii <char-203>
|
||||
tI <char-203>
|
||||
tu <char-206>
|
||||
tuu <char-222>
|
||||
tU <char-222>
|
||||
te <char-166><char-188>
|
||||
tee <char-167><char-188>
|
||||
tE <char-167><char-188>
|
||||
tai <char-168><char-188>
|
||||
to <char-166><char-188><char-161>
|
||||
too <char-167><char-188><char-161>
|
||||
tO <char-167><char-188><char-161>
|
||||
tau <char-166><char-188><char-199>
|
||||
|
||||
d <char-240>
|
||||
da <char-188>
|
||||
daa <char-188><char-161>
|
||||
dA <char-188><char-161>
|
||||
di <char-202>
|
||||
dii <char-203>
|
||||
dI <char-203>
|
||||
du <char-206>
|
||||
duu <char-222>
|
||||
dU <char-222>
|
||||
de <char-166><char-188>
|
||||
dee <char-167><char-188>
|
||||
dE <char-167><char-188>
|
||||
dai <char-168><char-188>
|
||||
do <char-166><char-188><char-161>
|
||||
doo <char-167><char-188><char-161>
|
||||
dO <char-167><char-188><char-161>
|
||||
dau <char-166><char-188><char-199>
|
||||
|
||||
N <char-241>
|
||||
Na <char-189>
|
||||
Naa <char-189><char-161>
|
||||
NA <char-189><char-161>
|
||||
Ni <char-189><char-162>
|
||||
Nii <char-189><char-163>
|
||||
NI <char-189><char-163>
|
||||
Nu <char-207>
|
||||
Nuu <char-223>
|
||||
NU <char-223>
|
||||
Ne <char-166><char-189>
|
||||
Nee <char-167><char-189>
|
||||
NE <char-167><char-189>
|
||||
Nai <char-168><char-189>
|
||||
No <char-166><char-189><char-161>
|
||||
Noo <char-167><char-189><char-161>
|
||||
NO <char-167><char-189><char-161>
|
||||
Nau <char-166><char-189><char-199>
|
||||
|
||||
th <char-242>
|
||||
tha <char-190>
|
||||
thaa <char-190><char-161>
|
||||
thA <char-190><char-161>
|
||||
thi <char-190><char-162>
|
||||
thii <char-190><char-163>
|
||||
thI <char-190><char-163>
|
||||
thu <char-208>
|
||||
thuu <char-224>
|
||||
thU <char-224>
|
||||
the <char-166><char-190>
|
||||
thee <char-167><char-190>
|
||||
thE <char-167><char-190>
|
||||
thai <char-168><char-190>
|
||||
tho <char-166><char-190><char-161>
|
||||
thoo <char-167><char-190><char-161>
|
||||
thO <char-167><char-190><char-161>
|
||||
thau <char-166><char-190><char-199>
|
||||
|
||||
w <char-243>
|
||||
wa <char-191>
|
||||
waa <char-191><char-161>
|
||||
wA <char-191><char-161>
|
||||
wi <char-191><char-162>
|
||||
wii <char-191><char-163>
|
||||
wI <char-191><char-163>
|
||||
wu <char-209>
|
||||
wuu <char-225>
|
||||
wU <char-225>
|
||||
we <char-166><char-191>
|
||||
wee <char-167><char-191>
|
||||
wE <char-167><char-191>
|
||||
wai <char-168><char-191>
|
||||
wo <char-166><char-191><char-161>
|
||||
woo <char-167><char-191><char-161>
|
||||
wO <char-167><char-191><char-161>
|
||||
wau <char-166><char-191><char-199>
|
||||
|
||||
n- <char-243>
|
||||
n-a <char-191>
|
||||
n-aa <char-191><char-161>
|
||||
n-A <char-191><char-161>
|
||||
n-i <char-191><char-162>
|
||||
n-ii <char-191><char-163>
|
||||
n-I <char-191><char-163>
|
||||
n-u <char-209>
|
||||
n-uu <char-225>
|
||||
n-U <char-225>
|
||||
n-e <char-166><char-191>
|
||||
n-ee <char-167><char-191>
|
||||
n-E <char-167><char-191>
|
||||
n-ai <char-168><char-191>
|
||||
n-o <char-166><char-191><char-161>
|
||||
n-oo <char-167><char-191><char-161>
|
||||
n-O <char-167><char-191><char-161>
|
||||
n-au <char-166><char-191><char-199>
|
||||
|
||||
p <char-244>
|
||||
pa <char-192>
|
||||
paa <char-192><char-161>
|
||||
pA <char-192><char-161>
|
||||
pi <char-192><char-162>
|
||||
pii <char-192><char-163>
|
||||
pI <char-192><char-163>
|
||||
pu <char-210>
|
||||
puu <char-226>
|
||||
pU <char-226>
|
||||
pe <char-166><char-192>
|
||||
pee <char-167><char-192>
|
||||
pE <char-167><char-192>
|
||||
pai <char-168><char-192>
|
||||
po <char-166><char-192><char-161>
|
||||
poo <char-167><char-192><char-161>
|
||||
pO <char-167><char-192><char-161>
|
||||
pau <char-166><char-192><char-199>
|
||||
|
||||
b <char-244>
|
||||
ba <char-192>
|
||||
baa <char-192><char-161>
|
||||
bA <char-192><char-161>
|
||||
bi <char-192><char-162>
|
||||
bii <char-192><char-163>
|
||||
bI <char-192><char-163>
|
||||
bu <char-210>
|
||||
buu <char-226>
|
||||
bU <char-226>
|
||||
be <char-166><char-192>
|
||||
bee <char-167><char-192>
|
||||
bE <char-167><char-192>
|
||||
bai <char-168><char-192>
|
||||
bo <char-166><char-192><char-161>
|
||||
boo <char-167><char-192><char-161>
|
||||
bO <char-167><char-192><char-161>
|
||||
bau <char-166><char-192><char-199>
|
||||
|
||||
m <char-245>
|
||||
ma <char-193>
|
||||
maa <char-193><char-161>
|
||||
mA <char-193><char-161>
|
||||
mi <char-193><char-162>
|
||||
mii <char-193><char-163>
|
||||
mI <char-193><char-163>
|
||||
mu <char-211>
|
||||
muu <char-227>
|
||||
mU <char-227>
|
||||
me <char-166><char-193>
|
||||
mee <char-167><char-193>
|
||||
mE <char-167><char-193>
|
||||
mai <char-168><char-193>
|
||||
mo <char-166><char-193><char-161>
|
||||
moo <char-167><char-193><char-161>
|
||||
mO <char-167><char-193><char-161>
|
||||
mau <char-166><char-193><char-199>
|
||||
|
||||
y <char-246>
|
||||
ya <char-194>
|
||||
yaa <char-194><char-161>
|
||||
yA <char-194><char-161>
|
||||
yi <char-194><char-162>
|
||||
yii <char-194><char-163>
|
||||
yI <char-194><char-163>
|
||||
yu <char-212>
|
||||
yuu <char-228>
|
||||
yU <char-228>
|
||||
ye <char-166><char-194>
|
||||
yee <char-167><char-194>
|
||||
yE <char-167><char-194>
|
||||
yai <char-168><char-194>
|
||||
yo <char-166><char-194><char-161>
|
||||
yoo <char-167><char-194><char-161>
|
||||
yO <char-167><char-194><char-161>
|
||||
yau <char-166><char-194><char-199>
|
||||
|
||||
r <char-247>
|
||||
ra <char-195>
|
||||
raa <char-195><char-161>
|
||||
rA <char-195><char-161>
|
||||
ri <char-195><char-162>
|
||||
rii <char-195><char-163>
|
||||
rI <char-195><char-163>
|
||||
ru <char-213>
|
||||
ruu <char-229>
|
||||
rU <char-229>
|
||||
re <char-166><char-195>
|
||||
ree <char-167><char-195>
|
||||
rE <char-167><char-195>
|
||||
rai <char-168><char-195>
|
||||
ro <char-166><char-195><char-161>
|
||||
roo <char-167><char-195><char-161>
|
||||
rO <char-167><char-195><char-161>
|
||||
rau <char-166><char-195><char-199>
|
||||
|
||||
l <char-248>
|
||||
la <char-196>
|
||||
laa <char-196><char-161>
|
||||
lA <char-196><char-161>
|
||||
li <char-196><char-162>
|
||||
lii <char-196><char-163>
|
||||
lI <char-196><char-163>
|
||||
lu <char-214>
|
||||
luu <char-230>
|
||||
lU <char-230>
|
||||
le <char-166><char-196>
|
||||
lee <char-167><char-196>
|
||||
lE <char-167><char-196>
|
||||
lai <char-168><char-196>
|
||||
lo <char-166><char-196><char-161>
|
||||
loo <char-167><char-196><char-161>
|
||||
lO <char-167><char-196><char-161>
|
||||
lau <char-166><char-196><char-199>
|
||||
|
||||
v <char-249>
|
||||
va <char-197>
|
||||
vaa <char-197><char-161>
|
||||
vA <char-197><char-161>
|
||||
vi <char-197><char-162>
|
||||
vii <char-197><char-163>
|
||||
vI <char-197><char-163>
|
||||
vu <char-215>
|
||||
vuu <char-231>
|
||||
vU <char-231>
|
||||
ve <char-166><char-197>
|
||||
vee <char-167><char-197>
|
||||
vE <char-167><char-197>
|
||||
vai <char-168><char-197>
|
||||
vo <char-166><char-197><char-161>
|
||||
voo <char-167><char-197><char-161>
|
||||
vO <char-167><char-197><char-161>
|
||||
vau <char-166><char-197><char-199>
|
||||
|
||||
z <char-250>
|
||||
za <char-198>
|
||||
zaa <char-198><char-161>
|
||||
zA <char-198><char-161>
|
||||
zi <char-198><char-162>
|
||||
zii <char-198><char-163>
|
||||
zI <char-198><char-163>
|
||||
zu <char-216>
|
||||
zuu <char-232>
|
||||
zU <char-232>
|
||||
ze <char-166><char-198>
|
||||
zee <char-167><char-198>
|
||||
zE <char-167><char-198>
|
||||
zai <char-168><char-198>
|
||||
zo <char-166><char-198><char-161>
|
||||
zoo <char-167><char-198><char-161>
|
||||
zO <char-167><char-198><char-161>
|
||||
zau <char-166><char-198><char-199>
|
||||
|
||||
L <char-251>
|
||||
La <char-199>
|
||||
Laa <char-199><char-161>
|
||||
LA <char-199><char-161>
|
||||
Li <char-199><char-162>
|
||||
Lii <char-199><char-163>
|
||||
LI <char-199><char-163>
|
||||
Lu <char-217>
|
||||
Luu <char-233>
|
||||
LU <char-233>
|
||||
Le <char-166><char-199>
|
||||
Lee <char-167><char-199>
|
||||
LE <char-167><char-199>
|
||||
Lai <char-168><char-199>
|
||||
Lo <char-166><char-199><char-161>
|
||||
Loo <char-167><char-199><char-161>
|
||||
LO <char-167><char-199><char-161>
|
||||
Lau <char-166><char-199><char-199>
|
||||
|
||||
R <char-252>
|
||||
Ra <char-200>
|
||||
Raa <char-200><char-161>
|
||||
RA <char-200><char-161>
|
||||
Ri <char-200><char-162>
|
||||
Rii <char-200><char-163>
|
||||
RI <char-200><char-163>
|
||||
Ru <char-218>
|
||||
Ruu <char-234>
|
||||
RU <char-234>
|
||||
Re <char-166><char-200>
|
||||
Ree <char-167><char-200>
|
||||
RE <char-167><char-200>
|
||||
Rai <char-168><char-200>
|
||||
Ro <char-166><char-200><char-161>
|
||||
Roo <char-167><char-200><char-161>
|
||||
RO <char-167><char-200><char-161>
|
||||
Rau <char-166><char-200><char-199>
|
||||
|
||||
n <char-253>
|
||||
na <char-201>
|
||||
naa <char-201><char-161>
|
||||
nA <char-201><char-161>
|
||||
ni <char-201><char-162>
|
||||
nii <char-201><char-163>
|
||||
nI <char-201><char-163>
|
||||
nu <char-219>
|
||||
nuu <char-235>
|
||||
nU <char-235>
|
||||
ne <char-166><char-201>
|
||||
nee <char-167><char-201>
|
||||
nE <char-167><char-201>
|
||||
nai <char-168><char-201>
|
||||
no <char-166><char-201><char-161>
|
||||
noo <char-167><char-201><char-161>
|
||||
nO <char-167><char-201><char-161>
|
||||
nau <char-166><char-201><char-199>
|
||||
|
||||
" Grantha letters
|
||||
j <char-136>
|
||||
ja <char-131>
|
||||
jaa <char-131><char-161>
|
||||
jA <char-131><char-161>
|
||||
ji <char-131><char-162>
|
||||
jii <char-131><char-163>
|
||||
jI <char-131><char-163>
|
||||
ju <char-131><char-164>
|
||||
juu <char-131><char-164>
|
||||
jU <char-131><char-165>
|
||||
je <char-166><char-131>
|
||||
jee <char-167><char-131>
|
||||
jE <char-167><char-131>
|
||||
jai <char-168><char-131>
|
||||
jo <char-166><char-131><char-161>
|
||||
joo <char-167><char-131><char-161>
|
||||
jO <char-167><char-131><char-161>
|
||||
jau <char-166><char-131><char-199>
|
||||
|
||||
sh <char-137>
|
||||
sha <char-132>
|
||||
shaa <char-132><char-161>
|
||||
shA <char-132><char-161>
|
||||
shi <char-132><char-162>
|
||||
shii <char-132><char-163>
|
||||
shI <char-132><char-163>
|
||||
shu <char-131><char-164>
|
||||
shuu <char-131><char-164>
|
||||
shU <char-131><char-165>
|
||||
she <char-166><char-132>
|
||||
shee <char-167><char-132>
|
||||
shE <char-167><char-132>
|
||||
shai <char-168><char-132>
|
||||
sho <char-166><char-132><char-161>
|
||||
shoo <char-167><char-132><char-161>
|
||||
shO <char-167><char-132><char-161>
|
||||
shau <char-166><char-132><char-199>
|
||||
|
||||
S <char-138>
|
||||
Sa <char-133>
|
||||
Saa <char-133><char-161>
|
||||
SA <char-133><char-161>
|
||||
Si <char-133><char-162>
|
||||
Sii <char-133><char-163>
|
||||
SI <char-133><char-163>
|
||||
Su <char-133><char-164>
|
||||
Suu <char-133><char-165>
|
||||
SU <char-133><char-165>
|
||||
Se <char-166><char-133>
|
||||
See <char-167><char-133>
|
||||
SE <char-167><char-133>
|
||||
Sai <char-168><char-133>
|
||||
So <char-166><char-133><char-161>
|
||||
Soo <char-167><char-133><char-161>
|
||||
SO <char-167><char-133><char-161>
|
||||
Sau <char-166><char-133><char-199>
|
||||
|
||||
h <char-139>
|
||||
ha <char-134>
|
||||
haa <char-134><char-161>
|
||||
hA <char-134><char-161>
|
||||
hi <char-134><char-162>
|
||||
hii <char-134><char-163>
|
||||
hI <char-134><char-163>
|
||||
hu <char-134><char-164>
|
||||
huu <char-134><char-165>
|
||||
hU <char-134><char-165>
|
||||
he <char-166><char-134>
|
||||
hee <char-167><char-134>
|
||||
hE <char-167><char-134>
|
||||
hai <char-168><char-134>
|
||||
ho <char-166><char-134><char-161>
|
||||
hoo <char-167><char-134><char-161>
|
||||
hO <char-167><char-134><char-161>
|
||||
hau <char-166><char-134><char-199>
|
||||
|
||||
x <char-140>
|
||||
xa <char-135>
|
||||
xaa <char-135><char-161>
|
||||
xA <char-135><char-161>
|
||||
xi <char-135><char-162>
|
||||
xii <char-135><char-163>
|
||||
xI <char-135><char-163>
|
||||
xu <char-135><char-164>
|
||||
xuu <char-135><char-165>
|
||||
xU <char-135><char-165>
|
||||
xe <char-166><char-135>
|
||||
xee <char-167><char-135>
|
||||
xE <char-167><char-135>
|
||||
xai <char-168><char-135>
|
||||
xo <char-166><char-135><char-161>
|
||||
xoo <char-167><char-135><char-161>
|
||||
xO <char-167><char-135><char-161>
|
||||
xau <char-166><char-135><char-199>
|
||||
|
||||
sri <char-130>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.9 KiB |
@@ -1,6 +1,7 @@
|
||||
" Menu Translations: Espa<70>ol
|
||||
" Maintainer: Alejandro L<>pez-Valencia <dradul@yahoo.com>
|
||||
" Last Change: 2004 May 12
|
||||
" Maintainer: Alejandro L<>pez-Valencia <dradul@users.sourceforge.net>
|
||||
" Version: 6.4.p0-1
|
||||
" Last Change: 2005 Dec 01
|
||||
"
|
||||
|
||||
" Quit when menu translations have already been done.
|
||||
@@ -86,7 +87,7 @@ menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! Activar/Desactivar\ compatiblida
|
||||
|
||||
menutrans Search\ &Path\.\.\. Ruta\ de\ &b<EFBFBD>squeda\.\.\.
|
||||
|
||||
menutrans Ta&g\ Files\.\.\. Ficheros\ de\ <EFBFBD>ta&gs<EFBFBD>\.\.\.
|
||||
menutrans Ta&g\ Files\.\.\. Ficheros\ de\ &etiquetas\.\.\.
|
||||
|
||||
" GUI options
|
||||
menutrans Toggle\ &Toolbar Ocultar/Mostrar\ barra\ de\ &herramientas
|
||||
@@ -102,7 +103,7 @@ menutrans F&ile\ Settings Opciones\ del\ &fichero
|
||||
|
||||
" Boolean options
|
||||
menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Activar/Desactivar\ &numeraci<EFBFBD>n\ de\ l<EFBFBD>neas<Tab>:set\ nu!
|
||||
menutrans Toggle\ &List\ Mode<Tab>:set\ list! Activar/Desactivar\ modo\ <EFBFBD>&list<EFBFBD><Tab>:set\ list!
|
||||
menutrans Toggle\ &List\ Mode<Tab>:set\ list! Activar/Desactivar\ modo\ de\ lista<Tab>:set\ list!
|
||||
menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Activar/Desactivar\ &quiebre\ de\ l<EFBFBD>neas<Tab>:set\ wrap!
|
||||
menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Activar/Desactivar\ quiebre\ entre\ &palabras<Tab>:set\ lbr!
|
||||
menutrans Toggle\ &expand-tab<Tab>:set\ et! Activar/Desactivar\ &expansi<EFBFBD>n\ de\ marcas\ de\ \tabulado<Tab>:set\ et!
|
||||
@@ -151,9 +152,9 @@ menutrans slovak eslovaco
|
||||
|
||||
" Programming menu
|
||||
menutrans &Tools &Herramientas
|
||||
menutrans &Jump\ to\ this\ tag<Tab>g^] &Saltar\ a\ este\ <EFBFBD>tag<EFBFBD><Tab>g^]
|
||||
menutrans &Jump\ to\ this\ tag<Tab>g^] &Saltar\ a\ este\ etiqueta<Tab>g^]
|
||||
menutrans Jump\ &back<Tab>^T Saltar\ &atr<EFBFBD>s<Tab>^T
|
||||
menutrans Build\ &Tags\ File Crear\ fichero\ de\ <EFBFBD>&tags<EFBFBD>\
|
||||
menutrans Build\ &Tags\ File Crear\ fichero\ de\ &etiquetas\
|
||||
menutrans &Diff Modo\ de\ &diferencias
|
||||
menutrans &Folding &Plegado
|
||||
menutrans &Make<Tab>:make Ejecutar\ <20>&Make<EFBFBD><Tab>:make
|
||||
@@ -260,8 +261,8 @@ if has("toolbar")
|
||||
if 0 " disabled; These are in the Windows menu
|
||||
tmenu ToolBar.New Ventana nueva
|
||||
tmenu ToolBar.WinSplit Dividir ventana
|
||||
tmenu ToolBar.WinMax Ventana m<EFBFBD>xima
|
||||
tmenu ToolBar.WinMin Ventana m<EFBFBD>nima
|
||||
tmenu ToolBar.WinMax Altura m<EFBFBD>xima
|
||||
tmenu ToolBar.WinMin Altura m<EFBFBD>nima
|
||||
tmenu ToolBar.WinVSplit Dividir verticalmente
|
||||
tmenu ToolBar.WinMaxWidth Anchura m<EFBFBD>xima
|
||||
tmenu ToolBar.WinMinWidth Anchura m<EFBFBD>nima
|
||||
@@ -269,11 +270,11 @@ if has("toolbar")
|
||||
endif
|
||||
tmenu ToolBar.LoadSesn Cargar sesi<EFBFBD>n
|
||||
tmenu ToolBar.SaveSesn Guardar sesi<EFBFBD>n
|
||||
tmenu ToolBar.RunScript Ejecutar un <EFBFBD>script<EFBFBD>
|
||||
tmenu ToolBar.RunScript Ejecutar un archivo de <20>rdenes
|
||||
tmenu ToolBar.Make Ejecutar <20>Make<EFBFBD>
|
||||
tmenu ToolBar.Shell Abrir una <EFBFBD>Shell<EFBFBD>
|
||||
tmenu ToolBar.RunCtags Generar un fichero de <EFBFBD>tags<EFBFBD>
|
||||
tmenu ToolBar.TagJump Saltar a un <EFBFBD>tag<EFBFBD>
|
||||
tmenu ToolBar.Shell Abrir un int<EFBFBD>rprete de comandos
|
||||
tmenu ToolBar.RunCtags Generar un fichero de etiquetas
|
||||
tmenu ToolBar.TagJump Saltar a una etiqueta
|
||||
tmenu ToolBar.Help Ayuda
|
||||
tmenu ToolBar.FindHelp Buscar en la ayuda...
|
||||
endfun
|
||||
@@ -282,15 +283,15 @@ endif
|
||||
" Syntax menu
|
||||
menutrans &Syntax &Sintaxis
|
||||
menutrans &Show\ filetypes\ in\ menu &Mostrar\ listas\ de\ <20>tipo\ de\ fichero<EFBFBD>
|
||||
menutrans Set\ '&syntax'\ only Activar\ s<EFBFBD>lo\ <EFBFBD>sintaxis<EFBFBD>
|
||||
menutrans Set\ '&syntax'\ only Activar\ s<EFBFBD>lo\ sintaxis
|
||||
menutrans Set\ '&filetype'\ too Activar\ tambi<EFBFBD>n\ <20>tipo\ de\ fichero<EFBFBD>
|
||||
menutrans &Off &Desactivar\ <EFBFBD>sintaxis<EFBFBD>
|
||||
menutrans &Manual <EFBFBD>sintaxis<EFBFBD>\ &manual
|
||||
menutrans A&utomatic <EFBFBD>sintaxis<EFBFBD>\ a&utom<EFBFBD>tica
|
||||
menutrans &Off &Desactivar\ sintaxis
|
||||
menutrans &Manual sintaxis\ &manual
|
||||
menutrans A&utomatic sintaxis\ a&utom<EFBFBD>tica
|
||||
menutrans on/off\ for\ &This\ file Activar/Desactivar\ en\ es&te\ fichero
|
||||
menutrans Co&lor\ test &Prueba\ de\ colores
|
||||
menutrans &Highlight\ test Prueba\ de\ &realzado
|
||||
menutrans &Convert\ to\ HTML &Convertir\ en\ HTML
|
||||
menutrans &Convert\ to\ HTML &Convertir\ a\ HTML
|
||||
|
||||
" Find Help dialog text
|
||||
let g:menutrans_help_dialog = "Introduzca un nombre de comando o palabra para obtener ayuda;\n\nAnteponga i_ para comandos de entrada (e.g.: i_CTRL-X)\nAnteponga c_ para comandos de la l<>nea de comandos (e.g.: c_<Del>)\nAnteponga ` para un nombre de opci<63>n (e.g.: `shiftwidth`)"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Menu Translations: Italian / Italiano
|
||||
" Maintainer: Antonio Colombo <azc10@yahoo.com>
|
||||
" Vlad Sandrini <sator72@libero.it>
|
||||
" Last Change: 2005 Mar 16
|
||||
" Last Change: 2005 Aug 13
|
||||
|
||||
" Quit when menu translations have already been done.
|
||||
if exists("did_menu_trans")
|
||||
@@ -159,6 +159,26 @@ menut &Jump\ to\ this\ tag<Tab>g^] &Vai\ a\ questa\ Tag<Tab>g^]
|
||||
menut Jump\ &back<Tab>^T Torna\ &indietro<Tab>^T
|
||||
menut Build\ &Tags\ File Costruisci\ File\ &Tags\
|
||||
|
||||
" Menu ortografia / Spelling
|
||||
menut &Spelling &Ortografia
|
||||
|
||||
menut &Spell\ Check\ On Attiva\ &Controllo\ ortografico
|
||||
menut Spell\ Check\ &Off &Disattiva\ controllo\ ortografico
|
||||
menut To\ &Next\ error<Tab>]s Errore\ &Seguente<tab>]s
|
||||
menut To\ &Previous\ error<Tab>[s Errore\ &Precedente<tab>[s
|
||||
menut Suggest\ &Corrections<Tab>z? &Suggerimenti<Tab>z?
|
||||
menut &Repeat\ correction<Tab>:spellrepall &Ripeti\ correzione<Tab>:spellrepall
|
||||
menut Set\ language\ to\ "en" Imposta\ lingua\ a\ "en"
|
||||
menut Set\ language\ to\ "en_au" Imposta\ lingua\ a\ "en_au"
|
||||
menut Set\ language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca"
|
||||
menut Set\ language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb"
|
||||
menut Set\ language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz"
|
||||
menut Set\ language\ to\ "en_us" Imposta\ lingua\ a\ "en_us"
|
||||
menut Set\ language\ to\ "it" Imposta\ lingua\ a\ "it"
|
||||
menut Set\ language\ to\ "it_it" Imposta\ lingua\ a\ "it_it"
|
||||
menut Set\ language\ to\ "it_ch" Imposta\ lingua\ a\ "it_ch"
|
||||
menut &Find\ More\ Languages &Trova\ altre\ lingue
|
||||
|
||||
" Menu piegature / Fold
|
||||
if has("folding")
|
||||
menut &Folding &Piegature
|
||||
@@ -212,7 +232,7 @@ menut &Close<Tab>:cclose &Chiudi<Tab>:cclose
|
||||
menut &Convert\ to\ HEX<Tab>:%!xxd &Converti\ a\ Esadecimale<Tab>:%!xxd
|
||||
menut Conve&rt\ back<Tab>:%!xxd\ -r Conve&rti\ da\ Esadecimale<Tab>:%!xxd\ -r
|
||||
|
||||
menut &Set\ Compiler Impo&sta\ Compilatore
|
||||
menut &SeT\ Compiler Impo&sta\ Compilatore
|
||||
|
||||
" Buffers / Buffer
|
||||
menut &Buffers &Buffer
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user