summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2019-11-04 06:14:33 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2019-11-04 06:14:42 +0000
commitff05eb692cb5fc4ad3ffb9e571509ec8d2e87a23 (patch)
treeb91d1d724444625de59fd65b37f0f3303e62e44b
parentReleasing progress-linux version 2:8.1.2136-1~progress5+u1. (diff)
downloadvim-ff05eb692cb5fc4ad3ffb9e571509ec8d2e87a23.tar.xz
vim-ff05eb692cb5fc4ad3ffb9e571509ec8d2e87a23.zip
Merging upstream version 2:8.1.2244.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--.gitattributes1
-rw-r--r--.travis.yml5
-rw-r--r--Filelist6
-rw-r--r--READMEdir/README_os390.txt8
-rw-r--r--nsis/lang/simpchinese.nsi36
-rw-r--r--runtime/autoload/xmlformat.vim121
-rw-r--r--runtime/defaults.vim10
-rw-r--r--runtime/doc/Makefile3
-rw-r--r--runtime/doc/autocmd.txt11
-rw-r--r--runtime/doc/change.txt12
-rw-r--r--runtime/doc/doctags.vim6
-rw-r--r--runtime/doc/eval.txt158
-rw-r--r--runtime/doc/helphelp.txt8
-rw-r--r--runtime/doc/if_perl.txt10
-rw-r--r--runtime/doc/if_ruby.txt10
-rw-r--r--runtime/doc/indent.txt6
-rw-r--r--runtime/doc/index.txt1
-rw-r--r--runtime/doc/insert.txt23
-rw-r--r--runtime/doc/map.txt34
-rw-r--r--runtime/doc/message.txt7
-rw-r--r--runtime/doc/motion.txt8
-rw-r--r--runtime/doc/options.txt71
-rw-r--r--runtime/doc/pi_netrw.txt8
-rw-r--r--runtime/doc/popup.txt27
-rw-r--r--runtime/doc/quickfix.txt4
-rw-r--r--runtime/doc/quickref.txt1
-rw-r--r--runtime/doc/syntax.txt32
-rw-r--r--runtime/doc/tags18
-rw-r--r--runtime/doc/term.txt40
-rw-r--r--runtime/doc/terminal.txt21
-rw-r--r--runtime/doc/textprop.txt15
-rw-r--r--runtime/doc/todo.txt154
-rw-r--r--runtime/doc/usr_25.txt9
-rw-r--r--runtime/doc/various.txt6
-rw-r--r--runtime/doc/vi_diff.txt5
-rw-r--r--runtime/doc/windows.txt10
-rw-r--r--runtime/filetype.vim12
-rw-r--r--runtime/ftplugin/meson.vim19
-rw-r--r--runtime/gvim.desktop5
-rw-r--r--runtime/indent/meson.vim180
-rw-r--r--runtime/indent/sh.vim6
-rw-r--r--runtime/indent/testdir/vim.in15
-rw-r--r--runtime/indent/testdir/vim.ok15
-rw-r--r--runtime/indent/testdir/yaml.in14
-rw-r--r--runtime/indent/testdir/yaml.ok14
-rw-r--r--runtime/indent/typescript.vim4
-rw-r--r--runtime/indent/vim.vim27
-rw-r--r--runtime/indent/xml.vim10
-rw-r--r--runtime/indent/yaml.vim4
-rw-r--r--runtime/lang/menu_tr.latin1.vim3
-rw-r--r--runtime/lang/menu_tr.utf-8.vim3
-rw-r--r--runtime/lang/menu_tr_tr.latin1.vim332
-rw-r--r--runtime/lang/menu_tr_tr.utf-8.vim331
-rw-r--r--runtime/pack/dist/opt/matchit/autoload/matchit.vim10
-rw-r--r--runtime/pack/dist/opt/matchit/doc/matchit.txt8
-rw-r--r--runtime/pack/dist/opt/matchit/plugin/matchit.vim16
-rw-r--r--runtime/plugin/matchparen.vim12
-rw-r--r--runtime/syntax/dart.vim90
-rw-r--r--runtime/syntax/debchangelog.vim30
-rw-r--r--runtime/syntax/debsources.vim4
-rw-r--r--runtime/syntax/dtd.vim13
-rw-r--r--runtime/syntax/meson.vim165
-rw-r--r--runtime/syntax/named.vim4
-rw-r--r--runtime/syntax/vim.vim113
-rw-r--r--runtime/syntax/xml.vim36
-rw-r--r--runtime/syntax/zsh.vim11
-rw-r--r--runtime/tutor/tutor.tr.iso91004
-rw-r--r--runtime/tutor/tutor.zh.big562
-rw-r--r--runtime/tutor/tutor.zh.utf-82
-rw-r--r--runtime/tutor/tutor.zh_tw.utf-82
-rw-r--r--runtime/vim.desktop5
-rw-r--r--src/INSTALLvms.txt2
-rw-r--r--src/Make_mvc.mak33
-rw-r--r--src/Makefile2
-rwxr-xr-xsrc/auto/configure3
-rw-r--r--src/autocmd.c5
-rw-r--r--src/buffer.c90
-rw-r--r--src/change.c25
-rw-r--r--src/cindent.c12
-rw-r--r--src/cmdexpand.c2
-rw-r--r--src/config.mk.in1
-rw-r--r--src/configure.ac2
-rw-r--r--src/crypt.c2
-rw-r--r--src/diff.c2
-rw-r--r--src/drawline.c232
-rw-r--r--src/drawscreen.c7
-rw-r--r--src/edit.c9
-rw-r--r--src/eval.c3
-rw-r--r--src/evalbuffer.c4
-rw-r--r--src/evalfunc.c25
-rw-r--r--src/evalvars.c31
-rw-r--r--src/ex_cmds.c49
-rw-r--r--src/ex_docmd.c72
-rw-r--r--src/ex_getln.c44
-rw-r--r--src/feature.h76
-rw-r--r--src/filepath.c50
-rw-r--r--src/getchar.c51
-rw-r--r--src/globals.h24
-rw-r--r--src/gui.c4
-rw-r--r--src/gui_gtk_x11.c2
-rw-r--r--src/gui_mac.c6
-rw-r--r--src/gui_w32.c4
-rw-r--r--src/highlight.c8
-rw-r--r--src/if_lua.c3
-rw-r--r--src/if_ole.cpp2
-rw-r--r--src/if_py_both.h15
-rw-r--r--src/if_python3.c36
-rw-r--r--src/insexpand.c6
-rw-r--r--src/macros.h2
-rw-r--r--src/main.c31
-rw-r--r--src/map.c623
-rw-r--r--src/memline.c11
-rw-r--r--src/menu.c3
-rw-r--r--src/message.c136
-rw-r--r--src/misc1.c35
-rw-r--r--src/misc2.c69
-rw-r--r--src/mouse.c54
-rw-r--r--src/move.c30
-rw-r--r--src/netbeans.c44
-rw-r--r--src/normal.c83
-rw-r--r--src/ops.c4
-rw-r--r--src/option.c116
-rw-r--r--src/option.h3
-rw-r--r--src/optiondefs.h6
-rw-r--r--src/optionstr.c22
-rw-r--r--src/os_amiga.c6
-rw-r--r--src/os_unix.c78
-rw-r--r--src/os_win32.c58
-rw-r--r--src/os_win32.h2
-rw-r--r--src/po/Make_all.mak4
-rw-r--r--src/po/de.po752
-rw-r--r--src/po/gvim.desktop.in1
-rw-r--r--src/po/tr.po7272
-rw-r--r--src/po/vim.desktop.in1
-rw-r--r--src/popupmenu.c52
-rw-r--r--src/popupwin.c92
-rw-r--r--src/proto/evalvars.pro1
-rw-r--r--src/proto/ex_cmds.pro2
-rw-r--r--src/proto/ex_docmd.pro9
-rw-r--r--src/proto/misc1.pro1
-rw-r--r--src/proto/misc2.pro6
-rw-r--r--src/proto/os_amiga.pro1
-rw-r--r--src/proto/popupmenu.pro1
-rw-r--r--src/proto/popupwin.pro1
-rw-r--r--src/proto/search.pro6
-rw-r--r--src/proto/term.pro2
-rw-r--r--src/proto/viminfo.pro1
-rw-r--r--src/pty.c2
-rw-r--r--src/quickfix.c21
-rw-r--r--src/regexp_nfa.c2
-rw-r--r--src/register.c97
-rw-r--r--src/scriptfile.c2
-rw-r--r--src/search.c223
-rw-r--r--src/sign.c314
-rw-r--r--src/spell.c4
-rw-r--r--src/spellsuggest.c2
-rw-r--r--src/structs.h52
-rw-r--r--src/tag.c32
-rw-r--r--src/term.c163
-rw-r--r--src/term.h8
-rw-r--r--src/terminal.c24
-rw-r--r--src/testdir/Make_all.mak1
-rw-r--r--src/testdir/Make_dos.mak11
-rw-r--r--src/testdir/Makefile4
-rw-r--r--src/testdir/dumps/Test_Xcursorline_13.dump2
-rw-r--r--src/testdir/dumps/Test_Xcursorline_14.dump2
-rw-r--r--src/testdir/dumps/Test_Xcursorline_15.dump2
-rw-r--r--src/testdir/dumps/Test_Xcursorline_16.dump2
-rw-r--r--src/testdir/dumps/Test_Xcursorline_17.dump2
-rw-r--r--src/testdir/dumps/Test_Xcursorline_18.dump2
-rw-r--r--src/testdir/dumps/Test_cmdwin_restore_1.dump12
-rw-r--r--src/testdir/dumps/Test_cmdwin_restore_2.dump12
-rw-r--r--src/testdir/dumps/Test_cmdwin_restore_3.dump18
-rw-r--r--src/testdir/dumps/Test_popupwin_corners.dump20
-rw-r--r--src/testdir/dumps/Test_popupwin_infopopup_hidden_1.dump14
-rw-r--r--src/testdir/dumps/Test_popupwin_infopopup_hidden_2.dump14
-rw-r--r--src/testdir/dumps/Test_popupwin_infopopup_hidden_3.dump14
-rw-r--r--src/testdir/dumps/Test_popupwin_matches.dump4
-rw-r--r--src/testdir/dumps/Test_popupwin_menu_01.dump2
-rw-r--r--src/testdir/dumps/Test_popupwin_menu_02.dump2
-rw-r--r--src/testdir/dumps/Test_popupwin_menu_04.dump2
-rw-r--r--src/testdir/dumps/Test_popupwin_previewpopup_4.dump12
-rw-r--r--src/testdir/dumps/Test_popupwin_previewpopup_5.dump12
-rw-r--r--src/testdir/dumps/Test_popupwin_previewpopup_7.dump12
-rw-r--r--src/testdir/dumps/Test_popupwin_previewpopup_8.dump12
-rw-r--r--src/testdir/dumps/Test_popupwin_scroll_11.dump10
-rw-r--r--src/testdir/dumps/Test_popupwin_scroll_12.dump10
-rw-r--r--src/testdir/dumps/Test_popupwin_wrap_1.dump10
-rw-r--r--src/testdir/dumps/Test_popupwin_wrap_2.dump10
-rw-r--r--src/testdir/dumps/Test_relnr_colors_1.dump10
-rw-r--r--src/testdir/dumps/Test_relnr_colors_2.dump10
-rw-r--r--src/testdir/dumps/Test_relnr_colors_3.dump10
-rw-r--r--src/testdir/dumps/Test_relnr_colors_4.dump10
-rw-r--r--src/testdir/dumps/Test_spell_1.dump8
-rw-r--r--src/testdir/dumps/Test_syntax_c_01.dump22
-rw-r--r--src/testdir/dumps/Test_terminal_dumpload.dump15
-rw-r--r--src/testdir/dumps/Test_terminal_normal_1.dump8
-rw-r--r--src/testdir/dumps/Test_terminal_normal_2.dump8
-rw-r--r--src/testdir/dumps/Test_terminal_normal_3.dump8
-rw-r--r--src/testdir/dumps/Test_textprop_syn_1.dump6
-rw-r--r--src/testdir/dumps/Test_tselect_1.dump10
-rw-r--r--src/testdir/dumps/Test_verbose_option_1.dump12
-rw-r--r--src/testdir/dumps/Test_winline_rnu.dump5
-rw-r--r--src/testdir/runtest.vim2
-rw-r--r--src/testdir/test42.inbin2368 -> 2386 bytes
-rw-r--r--src/testdir/test_alot.vim1
-rw-r--r--src/testdir/test_bufwintabinfo.vim12
-rw-r--r--src/testdir/test_cmdline.vim98
-rw-r--r--src/testdir/test_cursor_func.vim15
-rw-r--r--src/testdir/test_display.vim23
-rw-r--r--src/testdir/test_excmd.vim25
-rw-r--r--src/testdir/test_exit.vim22
-rw-r--r--src/testdir/test_filetype.vim5
-rw-r--r--src/testdir/test_filter_cmd.vim27
-rw-r--r--src/testdir/test_gn.vim27
-rw-r--r--src/testdir/test_let.vim8
-rw-r--r--src/testdir/test_listener.vim9
-rw-r--r--src/testdir/test_mapping.vim19
-rw-r--r--src/testdir/test_normal.vim52
-rw-r--r--src/testdir/test_number.vim34
-rw-r--r--src/testdir/test_options.vim36
-rw-r--r--src/testdir/test_popupwin.vim159
-rw-r--r--src/testdir/test_quickfix.vim104
-rw-r--r--src/testdir/test_recover.vim6
-rw-r--r--src/testdir/test_registers.vim28
-rw-r--r--src/testdir/test_ruby.vim2
-rw-r--r--src/testdir/test_shortpathname.vim20
-rw-r--r--src/testdir/test_spell.vim25
-rw-r--r--src/testdir/test_startup.vim12
-rw-r--r--src/testdir/test_substitute.vim10
-rw-r--r--src/testdir/test_syntax.vim21
-rw-r--r--src/testdir/test_system.vim48
-rw-r--r--src/testdir/test_tagjump.vim34
-rw-r--r--src/testdir/test_termcodes.vim424
-rw-r--r--src/testdir/test_terminal.vim101
-rw-r--r--src/testdir/test_textformat.vim20
-rw-r--r--src/testdir/test_textprop.vim63
-rw-r--r--src/testdir/test_undo.vim2
-rw-r--r--src/testdir/test_virtualedit.vim9
-rw-r--r--src/testdir/test_writefile.vim7
-rw-r--r--src/testing.c2
-rw-r--r--src/textprop.c15
-rw-r--r--src/ui.c4
-rw-r--r--src/undo.c38
-rw-r--r--src/usercmd.c2
-rw-r--r--src/version.c232
-rw-r--r--src/vim.h108
-rw-r--r--src/vim.rc8
-rw-r--r--src/viminfo.c6
-rw-r--r--src/window.c20
250 files changed, 14276 insertions, 3038 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9216dbe
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+src/testdir/test42.in diff
diff --git a/.travis.yml b/.travis.yml
index 4625bcf..f96564b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -142,7 +142,10 @@ script:
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
cat if_ver.txt
fi
- - do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold
+ - >
+ do_test make ${SHADOWOPT} ${TEST} &&
+ make -C runtime/doc vimtags VIMEXE=../../"${SRCDIR}"/vim &&
+ FOLD_MARKER=travis_fold
- echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
diff --git a/Filelist b/Filelist
index 92f7621..6cb5f63 100644
--- a/Filelist
+++ b/Filelist
@@ -4,6 +4,7 @@
# source files for all source archives
SRC_ALL = \
.gitignore \
+ .gitattributes \
.hgignore \
.lgtm.yml \
.travis.yml \
@@ -296,11 +297,11 @@ SRC_ALL = \
src/libvterm/src/encoding/uk.inc \
src/libvterm/src/encoding/uk.tbl \
src/libvterm/src/keyboard.c \
- src/libvterm/src/termmouse.c \
+ src/libvterm/src/mouse.c \
src/libvterm/src/parser.c \
src/libvterm/src/pen.c \
src/libvterm/src/rect.h \
- src/libvterm/src/termscreen.c \
+ src/libvterm/src/screen.c \
src/libvterm/src/state.c \
src/libvterm/src/unicode.c \
src/libvterm/src/utf8.h \
@@ -662,6 +663,7 @@ RT_ALL = \
runtime/doc/*.txt \
runtime/doc/Makefile \
runtime/doc/doctags.c \
+ runtime/doc/doctags.vim \
runtime/doc/test_urls.vim \
runtime/doc/vim.1 \
runtime/doc/evim.1 \
diff --git a/READMEdir/README_os390.txt b/READMEdir/README_os390.txt
index 8aa33ae..e0a0bdb 100644
--- a/READMEdir/README_os390.txt
+++ b/READMEdir/README_os390.txt
@@ -11,8 +11,8 @@ Getting the source to z/OS:
First get the source code in one big tar file and ftp it a binary to z/OS. If
the tar file is initially compressed with gzip (tar.gz) or bzip2 (tar.bz2)
-uncompress it on your PC, as this tools are (most likely) not available on the
-mainframe.
+uncompress it on your PC, as these tools are (most likely) not available on
+the mainframe.
To reduce the size of the tar file you might compress it into a zip file. On
z/OS Unix you might have the command "jar" from java to uncompress a zip. Use:
@@ -82,8 +82,8 @@ WARNING: This instruction was not tested with Vim 7.4 or later.
There are two ways for building VIM with X11 support. The first way is simple
and results in a big executable (~13 Mb), the second needs a few additional
-steps and results in a much smaller executable (~4.5 Mb). This examples assume
-you want Motif.
+steps and results in a much smaller executable (~4.5 Mb). These examples
+assume you want Motif.
The easy way:
$ export CC=cc
diff --git a/nsis/lang/simpchinese.nsi b/nsis/lang/simpchinese.nsi
index 389adc5..a6875a7 100644
--- a/nsis/lang/simpchinese.nsi
+++ b/nsis/lang/simpchinese.nsi
@@ -5,7 +5,7 @@
#
# Locale ID : 2052
# fileencoding : UTF-8
-# Author : Guopeng Wen
+# Author : Guopeng Wen, David Liu
!insertmacro MUI_LANGUAGE "SimpChinese"
@@ -112,7 +112,7 @@ LangString str_desc_plugin ${LANG_SIMPCHINESE} \
LangString str_section_plugin_home ${LANG_SIMPCHINESE} \
"私有插件目录"
LangString str_desc_plugin_home ${LANG_SIMPCHINESE} \
- "Create plugin directories in HOME directory."
+ "在主目录创建私有插件目录。"
LangString str_section_plugin_vim ${LANG_SIMPCHINESE} \
"公共插件目录"
@@ -141,14 +141,14 @@ LangString str_desc_rm_exe ${LANG_SIMPCHINESE} \
"删除 Vim 的所有执行文件及脚本。"
LangString str_ungroup_plugin ${LANG_SIMPCHINESE} \
- "Remove plugin directories"
+ "移除插件目录"
LangString str_desc_rm_plugin ${LANG_SIMPCHINESE} \
- "Remove the plugin directories if they are empty."
+ "移除插件目录(如果目录为空)。"
LangString str_unsection_plugin_home ${LANG_SIMPCHINESE} \
"私有插件目录"
LangString str_desc_rm_plugin_home ${LANG_SIMPCHINESE} \
- "Remove the plugin directories from HOME directory."
+ "从主目录中移除私有插件目录。"
LangString str_unsection_plugin_vim ${LANG_SIMPCHINESE} \
"公共插件目录"
@@ -241,37 +241,37 @@ LangString str_msg_unregistering ${LANG_SIMPCHINESE} \
LangString str_vimrc_page_title ${LANG_SIMPCHINESE} \
"设置 _vimrc"
LangString str_vimrc_page_subtitle ${LANG_SIMPCHINESE} \
- "选择键盘、鼠标和增强选项。"
+ "选择键盘、鼠标和扩展设置。"
LangString str_msg_compat_title ${LANG_SIMPCHINESE} \
"Vi / Vim 行为"
LangString str_msg_compat_desc ${LANG_SIMPCHINESE} \
- "&Compatibility and enhancements"
+ "兼容性与扩展(&B)"
LangString str_msg_compat_vi ${LANG_SIMPCHINESE} \
- "Vi compatible"
+ "原始 Vi"
LangString str_msg_compat_vim ${LANG_SIMPCHINESE} \
- "Vim original"
+ "原始 Vim"
LangString str_msg_compat_defaults ${LANG_SIMPCHINESE} \
- "Vim with some enhancements (load defaults.vim)"
+ "Vim 原始版本和部分扩展 (加载 defaults.vim)"
LangString str_msg_compat_all ${LANG_SIMPCHINESE} \
- "Vim with all enhancements (load vimrc_example.vim) (Default)"
+ "Vim 原始版本和所有扩展 (加载 vimrc_example.vim) (缺省)"
LangString str_msg_keymap_title ${LANG_SIMPCHINESE} \
"键盘映射"
LangString str_msg_keymap_desc ${LANG_SIMPCHINESE} \
- "&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+ "为 Windows 映射按键(&R) (例如:Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F 等)"
LangString str_msg_keymap_default ${LANG_SIMPCHINESE} \
- "Do not remap keys (Default)"
+ "不映射按键 (缺省)"
LangString str_msg_keymap_windows ${LANG_SIMPCHINESE} \
- "Remap a few keys"
+ "映射一些按键"
LangString str_msg_mouse_title ${LANG_SIMPCHINESE} \
"鼠标"
LangString str_msg_mouse_desc ${LANG_SIMPCHINESE} \
- "&Behavior of right and left buttons"
+ "左键和右键行为(&B)"
LangString str_msg_mouse_default ${LANG_SIMPCHINESE} \
- "Right: popup menu, Left: visual mode (Default)"
+ "右键:弹出菜单, 左键:可视化模式 (缺省)"
LangString str_msg_mouse_windows ${LANG_SIMPCHINESE} \
- "Right: popup menu, Left: select mode (Windows)"
+ "右键:弹出菜单, 左键:选择模式 (Windows)"
LangString str_msg_mouse_unix ${LANG_SIMPCHINESE} \
- "Right: extends selection, Left: visual mode (Unix)"
+ "右键: 扩展选择, 左键:可视化模式 (Unix)"
diff --git a/runtime/autoload/xmlformat.vim b/runtime/autoload/xmlformat.vim
index ea89401..30b09f1 100644
--- a/runtime/autoload/xmlformat.vim
+++ b/runtime/autoload/xmlformat.vim
@@ -1,6 +1,6 @@
" Vim plugin for formatting XML
-" Last Change: Thu, 07 Dec 2018
-" Version: 0.1
+" Last Change: 2019 Oct 24
+" Version: 0.2
" Author: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
" License: VIM License
@@ -22,44 +22,73 @@ func! xmlformat#Format()
" do not fall back to internal formatting
return 0
endif
+ let count_orig = v:count
let sw = shiftwidth()
let prev = prevnonblank(v:lnum-1)
let s:indent = indent(prev)/sw
let result = []
let lastitem = prev ? getline(prev) : ''
let is_xml_decl = 0
- " split on `<`, but don't split on very first opening <
- for item in split(join(getline(v:lnum, (v:lnum + v:count - 1))), '.\@<=[>]\zs')
- if s:EndTag(item)
- let s:indent = s:DecreaseIndent()
- call add(result, s:Indent(item))
- elseif s:EmptyTag(lastitem)
- call add(result, s:Indent(item))
- elseif s:StartTag(lastitem) && s:IsTag(item)
- let s:indent += 1
- call add(result, s:Indent(item))
- else
- if !s:IsTag(item)
- " Simply split on '<'
- let t=split(item, '.<\@=\zs')
- let s:indent+=1
- call add(result, s:Indent(t[0]))
- let s:indent = s:DecreaseIndent()
- call add(result, s:Indent(t[1]))
- else
+ " go through every line, but don't join all content together and join it
+ " back. We might lose empty lines
+ let list = getline(v:lnum, (v:lnum + count_orig - 1))
+ let current = 0
+ for line in list
+ " Keep empty input lines?
+ if empty(line)
+ call add(result, '')
+ continue
+ elseif line !~# '<[/]\?[^>]*>'
+ let nextmatch = match(list, '<[/]\?[^>]*>', current)
+ let line .= join(list[(current + 1):(nextmatch-1)], "\n")
+ call remove(list, current+1, nextmatch-1)
+ endif
+ " split on `>`, but don't split on very first opening <
+ " this means, items can be like ['<tag>', 'tag content</tag>']
+ for item in split(line, '.\@<=[>]\zs')
+ if s:EndTag(item)
+ let s:indent = s:DecreaseIndent()
+ call add(result, s:Indent(item))
+ elseif s:EmptyTag(lastitem)
+ call add(result, s:Indent(item))
+ elseif s:StartTag(lastitem) && s:IsTag(item)
+ let s:indent += 1
call add(result, s:Indent(item))
+ else
+ if !s:IsTag(item)
+ " Simply split on '<', if there is one,
+ " but reformat according to &textwidth
+ let t=split(item, '.<\@=\zs')
+ " t should only contain 2 items, but just be safe here
+ if s:IsTag(lastitem)
+ let s:indent+=1
+ endif
+ let result+=s:FormatContent([t[0]])
+ if s:EndTag(t[1])
+ let s:indent = s:DecreaseIndent()
+ endif
+ "for y in t[1:]
+ let result+=s:FormatContent(t[1:])
+ "endfor
+ else
+ call add(result, s:Indent(item))
+ endif
endif
- endif
- let lastitem = item
- endfor
+ let lastitem = item
+ endfor
+ let current += 1
+ endfor
- if !empty(result)
- exe v:lnum. ",". (v:lnum + v:count - 1). 'd'
+ if !empty(result)
+ let lastprevline = getline(v:lnum + count_orig)
+ let delete_lastline = v:lnum + count_orig - 1 == line('$')
+ exe v:lnum. ",". (v:lnum + count_orig - 1). 'd'
call append(v:lnum - 1, result)
" Might need to remove the last line, if it became empty because of the
" append() call
let last = v:lnum + len(result)
- if getline(last) is ''
+ " do not use empty(), it returns true for `empty(0)`
+ if getline(last) is '' && lastprevline is '' && delete_lastline
exe last. 'd'
endif
endif
@@ -88,6 +117,7 @@ func! s:StartTag(tag)
let is_comment = s:IsComment(a:tag)
return a:tag =~? '^\s*<[^/?]' && !is_comment
endfunc
+" Check if tag is a Comment start {{{1
func! s:IsComment(tag)
return a:tag =~? '<!--'
endfunc
@@ -108,6 +138,43 @@ endfunc
func! s:EmptyTag(tag)
return a:tag =~ '/>\s*$'
endfunc
+" Format input line according to textwidth {{{1
+func! s:FormatContent(list)
+ let result=[]
+ let limit = 80
+ if &textwidth > 0
+ let limit = &textwidth
+ endif
+ let column=0
+ let idx = -1
+ let add_indent = 0
+ let cnt = 0
+ for item in a:list
+ for word in split(item, '\s\+\S\+\zs')
+ let column += strdisplaywidth(word, column)
+ if match(word, "^\\s*\n\\+\\s*$") > -1
+ call add(result, '')
+ let idx += 1
+ let column = 0
+ let add_indent = 1
+ elseif column > limit || cnt == 0
+ let add = s:Indent(s:Trim(word))
+ call add(result, add)
+ let column = strdisplaywidth(add)
+ let idx += 1
+ else
+ if add_indent
+ let result[idx] = s:Indent(s:Trim(word))
+ else
+ let result[idx] .= ' '. s:Trim(word)
+ endif
+ let add_indent = 0
+ endif
+ let cnt += 1
+ endfor
+ endfor
+ return result
+endfunc
" Restoration And Modelines: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
diff --git a/runtime/defaults.vim b/runtime/defaults.vim
index e8a0ff4..e881604 100644
--- a/runtime/defaults.vim
+++ b/runtime/defaults.vim
@@ -1,7 +1,7 @@
" The default vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last change: 2019 Feb 18
+" Last change: 2019 Oct 27
"
" This is loaded if no vimrc file was found.
" Except when Vim is run with "-u NONE" or "-C".
@@ -75,8 +75,14 @@ inoremap <C-U> <C-G>u<C-U>
" In many terminal emulators the mouse works just fine. By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
+" Only xterm can grab the mouse events when using the shift key, for other
+" terminals use ":", select text and press Esc.
if has('mouse')
- set mouse=a
+ if &term =~ 'xterm'
+ set mouse=a
+ else
+ set mouse=nvi
+ endif
endif
" Switch syntax highlighting on when the terminal has colors or when using the
diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile
index 4a1ea03..0cbe020 100644
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -323,7 +323,8 @@ all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED)
# Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages.
vimtags: $(DOCS)
- $(VIMEXE) -u NONE -esX -c "helptags ++t ." -c quit
+ @if test -x $(VIMEXE); then $(VIMEXE) --clean -eX -u doctags.vim; \
+ else echo "vim executable $(VIMEXE) not found"; fi
# Use "doctags" to generate the tags file. Only works for English!
tags: doctags $(DOCS)
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 95618e6..cfadd9e 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -268,7 +268,6 @@ Name triggered by ~
|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
-|TerminalOpen| after a terminal buffer was created
|BufFilePre| before changing the name of the current buffer
|BufFilePost| after changing the name of the current buffer
@@ -302,6 +301,10 @@ Name triggered by ~
|VimLeavePre| before exiting Vim, before writing the viminfo file
|VimLeave| before exiting Vim, after writing the viminfo file
+ Terminal
+|TerminalOpen| after a terminal buffer was created
+|TerminalWinOpen| after a terminal buffer was created in a new window
+
Various
|FileChangedShell| Vim notices that a file changed since editing started
|FileChangedShellPost| After handling a file changed since editing started
@@ -1081,6 +1084,12 @@ TerminalOpen Just after a terminal buffer was created, with
`:terminal` or |term_start()|. This event is
triggered even if the buffer is created
without a window, with the ++hidden option.
+ *TerminalWinOpen*
+TerminalWinOpen Just after a terminal buffer was created, with
+ `:terminal` or |term_start()|. This event is
+ triggered only if the buffer is created
+ with a window. Can be used to set window
+ local options for the terminal window.
*TermResponse*
TermResponse After the response to |t_RV| is received from
the terminal. The value of |v:termresponse|
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 542d972..eda0d6c 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 8.1. Last change: 2019 Sep 27
+*change.txt* For Vim version 8.1. Last change: 2019 Sep 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -999,9 +999,13 @@ inside of strings can change! Also see 'softtabstop' option. >
delete and yank) ({.%#:} only work with put).
*:reg* *:registers*
-:reg[isters] Display the contents of all numbered and named
- registers. If a register is written to for |:redir|
- it will not be listed.
+:reg[isters] Display the type and contents of all numbered and
+ named registers. If a register is written to for
+ |:redir| it will not be listed.
+ Type can be one of:
+ "c" for |characterwise| text
+ "l" for |linewise| text
+ "b" for |blockwise-visual| text
:reg[isters] {arg} Display the contents of the numbered and named
diff --git a/runtime/doc/doctags.vim b/runtime/doc/doctags.vim
new file mode 100644
index 0000000..7dfbcc0
--- /dev/null
+++ b/runtime/doc/doctags.vim
@@ -0,0 +1,6 @@
+" This script makes a tags file for help text.
+"
+" Usage: vim -eX -u doctags.vim
+
+helptags ++t .
+qa!
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 927651c..30ec02d 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 8.1. Last change: 2019 Sep 27
+*eval.txt* For Vim version 8.1. Last change: 2019 Oct 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1662,6 +1662,10 @@ PREDEFINED VIM VARIABLES *vim-variable* *v:var* *v:*
*E963*
Some variables can be set by the user, but the type cannot be changed.
+ *v:argv* *argv-variable*
+v:argv The command line arguments Vim was invoked with. This is a
+ list of strings. The first item is the Vim command.
+
*v:beval_col* *beval_col-variable*
v:beval_col The number of the column, over which the mouse pointer is.
This is the byte index in the |v:beval_lnum| line.
@@ -2880,7 +2884,7 @@ win_id2tabwin({expr}) List get tab and window nr from window ID
win_id2win({expr}) Number get window nr from window ID
win_screenpos({nr}) List get screen position of window {nr}
win_splitmove({nr}, {target} [, {options}])
- none move window {nr} to split of {target}
+ Number move window {nr} to split of {target}
winbufnr({nr}) Number buffer number of window {nr}
wincol() Number window column of the cursor
winheight({nr}) Number height of window {nr}
@@ -2974,6 +2978,9 @@ append({lnum}, {text}) *append()*
appendbufline({expr}, {lnum}, {text}) *appendbufline()*
Like |append()| but append the text in buffer {expr}.
+ This function works only for loaded buffers. First call
+ |bufload()| if needed.
+
For the use of {expr}, see |bufname()|.
{lnum} is used like with |append()|. Note that using |line()|
@@ -3031,6 +3038,7 @@ argv([{nr} [, {winid}])
the whole |arglist| is returned.
The {winid} argument specifies the window ID, see |argc()|.
+ For the Vim command line arguments see |v:argv|.
assert_ functions are documented here: |assert-functions-details|
@@ -3540,8 +3548,8 @@ complete({startcol}, {matches}) *complete()* *E785*
< This isn't very useful, but it shows how it works. Note that
an empty string is returned to avoid a zero being inserted.
- Can also be used as a |method|, the second argument is passed
- in: >
+ Can also be used as a |method|, the base is passed as the
+ second argument: >
GetMatches()->complete(col('.'))
complete_add({expr}) *complete_add()*
@@ -3676,7 +3684,7 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
Can also be used as a |method|in: >
BuildMessage()->confirm("&Yes\n&No")
-
+<
*copy()*
copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't
different from using {expr} directly.
@@ -3871,6 +3879,9 @@ deletebufline({expr}, {first} [, {last}]) *deletebufline()*
If {last} is omitted then delete line {first} only.
On success 0 is returned, on failure 1 is returned.
+ This function works only for loaded buffers. First call
+ |bufload()| if needed.
+
For the use of {expr}, see |bufname()| above.
{first} and {last} are used like with |getline()|. Note that
@@ -3879,7 +3890,7 @@ deletebufline({expr}, {first} [, {last}]) *deletebufline()*
Can also be used as a |method|: >
GetBuffer()->deletebufline(1)
-
+<
*did_filetype()*
did_filetype() Returns |TRUE| when autocommands are being executed and the
FileType event has been triggered at least once. Can be used
@@ -4040,7 +4051,7 @@ exepath({expr}) *exepath()*
Can also be used as a |method|: >
GetCommand()->exepath()
-
+<
*exists()*
exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined,
zero otherwise.
@@ -4236,8 +4247,8 @@ expandcmd({expr}) *expandcmd()*
Expand special items in {expr} like what is done for an Ex
command such as `:edit`. This expands special keywords, like
with |expand()|, and environment variables, anywhere in
- {expr}. Returns the expanded string.
- Example: >
+ {expr}. "~user" and "~/path" are only expanded at the start.
+ Returns the expanded string. Example: >
:echo expandcmd('make %<.o')
< Can also be used as a |method|: >
@@ -4566,7 +4577,7 @@ foldlevel({lnum}) *foldlevel()*
Can also be used as a |method|: >
GetLnum()->foldlevel()
-
+<
*foldtext()*
foldtext() Returns a String, to be displayed for a closed fold. This is
the default function used for the 'foldtext' option and should
@@ -4772,6 +4783,10 @@ getbufinfo([{dict}])
changed TRUE if the buffer is modified.
changedtick number of changes made to the buffer.
hidden TRUE if the buffer is hidden.
+ lastused timestamp in seconds, like
+ |localtime()|, when the buffer was
+ last used.
+ {only with the |+viminfo| feature}
listed TRUE if the buffer is listed.
lnum current line number in buffer.
loaded TRUE if the buffer is loaded.
@@ -5848,7 +5863,7 @@ histadd({history}, {item}) *histadd()*
:let date=input("Enter date: ")
< This function is not available in the |sandbox|.
- Can also be used as a |method|, the base is used for the
+ Can also be used as a |method|, the base is passed as the
second argument: >
GetHistory()->histadd('search')
@@ -6376,8 +6391,8 @@ libcall({libname}, {funcname}, {argument})
Examples: >
:echo libcall("libc.so", "getenv", "HOME")
-< Can also be used as a |method|, where the base is passed as
- the argument to the called function: >
+< Can also be used as a |method|, the base is passed as the
+ third argument: >
GetValue()->libcall("libc.so", "getenv")
<
*libcallnr()*
@@ -6391,8 +6406,8 @@ libcallnr({libname}, {funcname}, {argument})
:call libcallnr("libc.so", "printf", "Hello World!\n")
:call libcallnr("libc.so", "sleep", 10)
<
- Can also be used as a |method|, where the base is passed as
- the argument to the called function: >
+ Can also be used as a |method|, the base is passed as the
+ third argument: >
GetValue()->libcallnr("libc.so", "printf")
<
@@ -6486,8 +6501,8 @@ listener_add({callback} [, {buf}]) *listener_add()*
a:bufnr the buffer that was changed
a:start first changed line number
a:end first line number below the change
- a:added total number of lines added, negative if lines
- were deleted
+ a:added number of lines added, negative if lines were
+ deleted
a:changes a List of items with details about the changes
Example: >
@@ -6543,8 +6558,8 @@ listener_add({callback} [, {buf}]) *listener_add()*
The {callback} is also not invoked when the buffer is
unloaded, use the |BufUnload| autocmd event for that.
- Can also be used as a |method|, where the base is passed as
- the second argument, the buffer: >
+ Can also be used as a |method|, the base is passed as the
+ second argument: >
GetBuffer()->listener_add(callback)
listener_flush([{buf}]) *listener_flush()*
@@ -7014,6 +7029,7 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
Can also be used as a |method|: >
GetText()->matchstrpos('word')
+<
*max()*
max({expr}) Return the maximum value of all items in {expr}.
{expr} can be a list or a dictionary. For a dictionary,
@@ -7499,7 +7515,7 @@ pum_getpos() *pum_getpos()*
row top screen row (0 first row)
col leftmost screen column (0 first col)
size total nr of items
- scrollbar |TRUE| if visible
+ scrollbar |TRUE| if scrollbar is visible
The values are the same as in |v:event| during
|CompleteChanged|.
@@ -8270,20 +8286,31 @@ serverlist() *serverlist()*
:echo serverlist()
<
setbufline({expr}, {lnum}, {text}) *setbufline()*
- Set line {lnum} to {text} in buffer {expr}. To insert
- lines use |append()|. Any text properties in {lnum} are
- cleared.
+ Set line {lnum} to {text} in buffer {expr}. This works like
+ |setline()| for the specified buffer.
+
+ This function works only for loaded buffers. First call
+ |bufload()| if needed.
+
+ To insert lines use |appendbufline()|.
+ Any text properties in {lnum} are cleared.
+
+ {text} can be a string to set one line, or a list of strings
+ to set multiple lines. If the list extends below the last
+ line then those lines are added.
For the use of {expr}, see |bufname()| above.
{lnum} is used like with |setline()|.
- This works like |setline()| for the specified buffer.
+ When {lnum} is just below the last line the {text} will be
+ added below the last line.
When {expr} is not a valid buffer, the buffer is not loaded or
{lnum} is not valid then 1 is returned. On success 0 is
returned.
- Can also be used as a |method|: >
+ Can also be used as a |method|, the base is passed as the
+ third argument: >
GetText()->setbufline(buf, lnum)
setbufvar({expr}, {varname}, {val}) *setbufvar()*
@@ -8299,7 +8326,8 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()*
:call setbufvar("todo", "myvar", "foobar")
< This function is not available in the |sandbox|.
- Can also be used as a |method|: >
+ Can also be used as a |method|, the base is passed as the
+ third argument: >
GetValue()->setbufvar(buf, varname)
setcharsearch({dict}) *setcharsearch()*
@@ -8348,7 +8376,8 @@ setenv({name}, {val}) *setenv()*
When {val} is |v:null| the environment variable is deleted.
See also |expr-env|.
- Can also be used as a |method|, passing the value as the base: >
+ Can also be used as a |method|, the base is passed as the
+ second argument: >
GetPath()->setenv('PATH')
setfperm({fname}, {mode}) *setfperm()* *chmod*
@@ -8379,7 +8408,7 @@ setline({lnum}, {text}) *setline()*
{lnum} is used like with |getline()|.
When {lnum} is just below the last line the {text} will be
- added as a new line.
+ added below the last line.
If this succeeds, 0 is returned. If this fails (most likely
because {lnum} is invalid) 1 is returned.
@@ -8397,7 +8426,8 @@ setline({lnum}, {text}) *setline()*
< Note: The '[ and '] marks are not set.
- Can also be used as a |method|, passing the text as the base: >
+ Can also be used as a |method|, the base is passed as the
+ second argument: >
GetText()->setline(lnum)
setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
@@ -8646,7 +8676,8 @@ settabvar({tabnr}, {varname}, {val}) *settabvar()*
Tabs are numbered starting with one.
This function is not available in the |sandbox|.
- Can also be used as a |method|, the base is used as the value: >
+ Can also be used as a |method|, the base is passed as the
+ third argument: >
GetValue()->settabvar(tab, name)
settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
@@ -8667,7 +8698,8 @@ settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
:call settabwinvar(3, 2, "myvar", "foobar")
< This function is not available in the |sandbox|.
- Can also be used as a |method|, the base is used as the value: >
+ Can also be used as a |method|, the base is passed as the
+ fourth argument: >
GetValue()->settabvar(tab, winnr, name)
settagstack({nr}, {dict} [, {action}]) *settagstack()*
@@ -8701,7 +8733,8 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()*
call settagstack(1003, stack)
unlet stack
<
- Can also be used as a |method|, the base is used as the Dict: >
+ Can also be used as a |method|, the base is passed as the
+ second argument: >
GetStack()->settagstack(winnr)
setwinvar({winnr}, {varname}, {val}) *setwinvar()*
@@ -8710,7 +8743,8 @@ setwinvar({winnr}, {varname}, {val}) *setwinvar()*
:call setwinvar(1, "&list", 0)
:call setwinvar(2, "myvar", "foobar")
-< Can also be used as a |method|, the base is used as the value: >
+< Can also be used as a |method|, the base is passed as the
+ third argument: >
GetValue()->setwinvar(winnr, name)
sha256({string}) *sha256()*
@@ -9078,8 +9112,8 @@ state([{what}]) *state()*
e.g. after |f|
a Insert mode autocomplete active
x executing an autocommand
- w blocked on waiting, e.g. ch_evalexpr() and
- ch_read(), ch_readraw() when reading json.
+ w blocked on waiting, e.g. ch_evalexpr(), ch_read() and
+ ch_readraw() when reading json.
S not triggering SafeState or SafeStateAgain
c callback invoked, including timer (repeats for
recursiveness up to "ccc")
@@ -9130,7 +9164,7 @@ str2nr({expr} [, {base} [, {quoted}]]) *str2nr()*
When {base} is omitted base 10 is used. This also means that
a leading zero doesn't cause octal conversion to be used, as
with the default String to Number conversion. Example: >
- let nr = str2nr('123')
+ let nr = str2nr('0123')
<
When {base} is 16 a leading "0x" or "0X" is ignored. With a
different base the result will be zero. Similarly, when
@@ -9247,6 +9281,7 @@ stridx({haystack}, {needle} [, {start}]) *stridx()*
Can also be used as a |method|: >
GetHaystack()->stridx(needle)
+<
*string()*
string({expr}) Return {expr} converted to a String. If {expr} is a Number,
Float, String, Blob or a composition of them, then the result
@@ -10142,8 +10177,8 @@ win_execute({id}, {command} [, {silent}]) *win_execute()*
Not all commands are allowed in popup windows.
When window {id} does not exist then no error is given.
- Can also be used as a |method|, the base is used for the
- command: >
+ Can also be used as a |method|, the base is passed as the
+ second argument: >
GetCommand()->win_execute(winid)
win_findbuf({bufnr}) *win_findbuf()*
@@ -10461,11 +10496,11 @@ xor({expr}, {expr}) *xor()*
to a number. A List, Dict or Float argument causes an error.
Example: >
:let bits = xor(bits, 0x80)
-< Can also be used as a |method|: >
+<
+ Can also be used as a |method|: >
:let bits = bits->xor(0x80)
<
-
*feature-list*
There are four types of features:
1. Features that are only supported when they have been enabled when Vim
@@ -11338,21 +11373,22 @@ This does NOT work: >
*:let=<<* *:let-heredoc*
*E990* *E991* *E172* *E221*
-:let {var-name} =<< [trim] {marker}
+:let {var-name} =<< [trim] {endmarker}
text...
text...
-{marker}
+{endmarker}
Set internal variable {var-name} to a List containing
- the lines of text bounded by the string {marker}.
- {marker} must not contain white space.
- {marker} cannot start with a lower case character.
- The last line should end only with the {marker} string
- without any other character. Watch out for white
- space after {marker}!
+ the lines of text bounded by the string {endmarker}.
+ {endmarker} must not contain white space.
+ {endmarker} cannot start with a lower case character.
+ The last line should end only with the {endmarker}
+ string without any other character. Watch out for
+ white space after {endmarker}!
Without "trim" any white space characters in the lines
of text are preserved. If "trim" is specified before
- {marker}, then indentation is stripped so you can do: >
+ {endmarker}, then indentation is stripped so you can
+ do: >
let text =<< trim END
if ok
echo 'done'
@@ -11366,23 +11402,31 @@ text...
non-empty text line is stripped from the input lines.
All leading indentation exactly matching the leading
indentation before `let` is stripped from the line
- containing {marker}. Note that the difference between
- space and tab matters here.
+ containing {endmarker}. Note that the difference
+ between space and tab matters here.
If {var-name} didn't exist yet, it is created.
Cannot be followed by another command, but can be
followed by a comment.
+ To avoid line continuation to be applied, consider
+ adding 'C' to 'cpoptions': >
+ set cpo+=C
+ let var =<< END
+ \ leading backslash
+ END
+ set cpo-=C
+<
Examples: >
let var1 =<< END
- Sample text 1
- Sample text 2
- Sample text 3
- END
+ Sample text 1
+ Sample text 2
+ Sample text 3
+ END
let data =<< trim DATA
- 1 2 3 4
- 5 6 7 8
+ 1 2 3 4
+ 5 6 7 8
DATA
<
*E121*
diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt
index ce73f8c..3f335d8 100644
--- a/runtime/doc/helphelp.txt
+++ b/runtime/doc/helphelp.txt
@@ -1,4 +1,4 @@
-*helphelp.txt* For Vim version 8.1. Last change: 2019 May 04
+*helphelp.txt* For Vim version 8.1. Last change: 2019 Oct 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -102,7 +102,11 @@ Help on help files *helphelp*
current file. See |help-translated|.
*:helpc* *:helpclose*
-:helpc[lose] Close one help window, if there is one.
+:helpc[lose] Close one help window, if there is one.
+ Vim will try to restore the window layout (including
+ cursor position) to the same layout it was before
+ opening the help window initially. This might cause
+ triggering several autocommands.
*:helpg* *:helpgrep*
:helpg[rep] {pattern}[@xx]
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
index bee9b88..a34e7c9 100644
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -55,14 +55,14 @@ The ActiveState one should work, Strawberry Perl is a good alternative.
working: >
:perl VIM::Msg("Hello")
-:pe[rl] << [endpattern]
+:pe[rl] << [endmarker]
{script}
-{endpattern}
+{endmarker}
Execute Perl script {script}.
- The {endpattern} after {script} must NOT be preceded
- by any white space.
+ The {endmarker} after {script} must NOT be preceded by
+ any white space.
- If [endpattern] is omitted, it defaults to a dot '.'
+ If [endmarker] is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands. Using
'.' helps when inside a function, because "$i;" looks
like the start of an |:insert| command to Vim.
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
index 0eca0b6..0950e02 100644
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -28,14 +28,14 @@ downloading Ruby there.
:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: >
:ruby print "Hello"
-:rub[y] << [endpattern]
+:rub[y] << [endmarker]
{script}
-{endpattern}
+{endmarker}
Execute Ruby script {script}.
- The {endpattern} after {script} must NOT be preceded
- by any white space.
+ The {endmarker} after {script} must NOT be preceded by
+ any white space.
- If [endpattern] is omitted, it defaults to a dot '.'
+ If [endmarker] is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands.
This form of the |:ruby| command is mainly useful for
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 36c49b8..e7f9af9 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -949,10 +949,12 @@ Function call arguments will indent 1 extra level. For two-space indentation: >
-------------
*PHP_IndentFunctionDeclarationParameters*
-Extra indentation levels to add to arguments in multi-line function definitions. >
+Extra indentation levels to add to arguments in multi-line function
+definitions. >
let g:PHP_IndentFunctionDeclarationParameters = 1
-Function arguments in declarations will indent 1 extra level. For two-space indentation: >
+Function arguments in declarations will indent 1 extra level. For two-space
+indentation: >
function call_the_thing(
$with_this,
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 6b7c822..d6957f5 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -781,6 +781,7 @@ tag char note action in Normal mode ~
|gn| gn 1,2 find the next match with the last used
search pattern and Visually select it
|gm| gm 1 go to character at middle of the screenline
+|gM| gM 1 go to character at middle of the text line
|go| go 1 cursor to byte N in the buffer
|gp| ["x]gp 2 put the text [from register x] after the
cursor N times, leave the cursor after it
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index dfc3541..d28bf59 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 8.1. Last change: 2019 Sep 27
+*insert.txt* For Vim version 8.1. Last change: 2019 Oct 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1138,6 +1138,27 @@ below the text, and the bottom of the menu otherwise.
After the info popup is created it can be found with |popup_findinfo()| and
properties can be changed with |popup_setoptions()|.
+ *complete-popuphidden*
+If the information for the popup is obtained asynchronously, use "popuphidden"
+in 'completeopt'. The info popup will then be initally hidden and
+|popup_show()| must be called once it has been filled with the info. This can
+be done with a |CompleteChanged| autocommand, something like this: >
+ set completeopt+=popuphidden
+ au CompleteChanged * call UpdateCompleteInfo()
+ func UpdateCompleteInfo()
+ " Cancel any pending info fetch
+ let item = v:event.completed_item
+ " Start fetching info for the item then call ShowCompleteInfo(info)
+ endfunc
+ func ShowCompleteInfo(info)
+ let id = popup_findinfo()
+ if id
+ call popup_settext(id, 'async info: ' .. a:info)
+ call popup_show(id)
+ endif
+ endfunc
+
+< *complete-item-kind*
The "kind" item uses a single letter to indicate the kind of completion. This
may be used to show the completion differently (different color or icon).
Currently these types can be used:
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index bdf5e97..d1202a7 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt* For Vim version 8.1. Last change: 2019 Jun 02
+*map.txt* For Vim version 8.1. Last change: 2019 Oct 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -20,7 +20,8 @@ manual.
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|
+ 1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
+ 1.12 Mapping an operator |:map-operator|
2. Abbreviations |abbreviations|
3. Local mappings and functions |script-local|
4. User-defined commands |user-commands|
@@ -777,6 +778,9 @@ 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.
+If the terminal supports the modifyOtherKeys mode and it has been enabled,
+then Vim can recognize more key combinations, see |modifyOtherKeys| below.
+
By default Vim assumes that pressing the ALT key sets the 8th bit of a typed
character. Most decent terminals can work that way, such as xterm, aterm and
rxvt. If your <A-k> mappings don't work it might be that the terminal is
@@ -814,7 +818,31 @@ 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*
+1.11 MAPPING IN modifyOtherKeys mode *modifyOtherKeys*
+
+Xterm and a few other terminals can be put in a mode where keys with modifiers
+are sent with a special escape code. Vim recognizes these codes and can then
+make a difference between CTRL-H and Backspace, even when Backspace sends the
+character 8. And many more special keys.
+
+For xterm modifyOtherKeys is enabled in the builtin termcap entry. If this is
+not used you can enable modifyOtherKeys with these lines in your vimrc: >
+ let &t_TI = "\<Esc>[>4;2m"
+ let &t_TE = "\<Esc>[>4;m"
+
+In case the modifyOtherKeys mode causes problems you can disable it: >
+ let &t_TI = ""
+ let &t_TE = ""
+It does not take effect immediately. To have this work without restarting Vim
+execute a shell command, e.g.: `!ls`
+
+A known side effect effect is that in Insert mode the raw escape sequence is
+inserted after the CTRL-V key. This can be used to check whether
+modifyOtherKeys is enabled: In Insert mode type CTRL-V CTRL-V, if you get
+one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
+
+
+1.12 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
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 4a7edca..570278a 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt* For Vim version 8.1. Last change: 2019 Aug 23
+*message.txt* For Vim version 8.1. Last change: 2019 Oct 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -480,7 +480,7 @@ try to solve the memory shortage. To stay on the safe side, exit Vim and
start again.
If this happens while Vim is still initializing, editing files is very
-unlikely to work, therefore Vim will exit with value 123.
+unlikely to work, therefore Vim will exit with value 123.
Buffers are only partly kept in memory, thus editing a very large file is
unlikely to cause an out-of-memory situation. Undo information is completely
@@ -582,7 +582,8 @@ allowed for the command that was used.
Vim was not able to create a swap file. You can still edit the file, but if
Vim unexpectedly exits the changes will be lost. And Vim may consume a lot of
memory when editing a big file. You may want to change the 'directory' option
-to avoid this error. See |swap-file|.
+to avoid this error. This error is not given when 'directory' is empty. See
+|swap-file|.
*E140* >
Use ! to write partial buffer
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index f0935da..de6b288 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt* For Vim version 8.1. Last change: 2019 Jun 02
+*motion.txt* For Vim version 8.1. Last change: 2019 Nov 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -227,6 +227,12 @@ g^ When lines wrap ('wrap' on): To the first non-blank
gm Like "g0", but half a screenwidth to the right (or as
much as possible).
+ *gM*
+gM Like "g0", but to halfway the text of the line.
+ With a count: to this percentage of text in the line.
+ Thus "10gM" is near the start of the text and "90gM"
+ is near the end of the text.
+
*g$* *g<End>*
g$ or g<End> When lines wrap ('wrap' on): To the last character of
the screen line and [count - 1] screen lines downward
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index cb65535..805a052 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 8.1. Last change: 2019 Sep 26
+*options.txt* For Vim version 8.1. Last change: 2019 Nov 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -856,7 +856,7 @@ A jump table for the options with a short description can be found at |Q_op|.
:set background&
< Vim will guess the value. In the GUI this should work correctly,
in other cases Vim might not be able to guess the right value.
- If the GUI supports a dark them, you can use the "d" flag in
+ If the GUI supports a dark theme, you can use the "d" flag in
'guioptions', see 'go-d'.
When the |t_RB| option is set, Vim will use it to request the background
@@ -1877,7 +1877,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'completeslash'* *'csl'*
'completeslash' 'csl' string (default: "")
local to buffer
- {not in Vi} {only for MS-Windows}
+ {only for MS-Windows}
When this option is set it overrules 'shellslash' for completion:
- When this option is set to "slash", a forward slash is used for path
completion in insert mode. This is useful when editing HTML tag, or
@@ -1917,7 +1917,14 @@ A jump table for the options with a short description can be found at |Q_op|.
completion in a popup window. Only works in combination
with "menu" or "menuone". Overrides "preview".
See |'completepopup'| for specifying properties.
- {only works when compiled with the +textprop feature}
+ {only works when compiled with the |+textprop| feature}
+
+ popuphidden
+ Just like "popup" but initially hide the popup. Use a
+ |CompleteChanged| autocommand to fetch the info and call
+ |popup_show()| once the popup has been filled.
+ See the example at |complete-popuphidden|.
+ {only works when compiled with the |+textprop| feature}
noinsert Do not insert any text for a match until the user selects
a match from the menu. Only works in combination with
@@ -2470,7 +2477,6 @@ A jump table for the options with a short description can be found at |Q_op|.
*'cursorlineopt'* *'culopt'*
'cursorlineopt' 'culopt' string (default: "number,line")
local to window
- {not in Vi}
{not available when compiled without the |+syntax|
feature}
Comma separated list of settings for how 'cursorline' is displayed.
@@ -2694,7 +2700,7 @@ A jump table for the options with a short description can be found at |Q_op|.
- The swap file will be created in the first directory where this is
possible.
- Empty means that no swap file will be used (recovery is
- impossible!).
+ impossible!) and no |E303| error will be given.
- A directory "." means to put the swap file in the same directory as
the edited file. On Unix, a dot is prepended to the file name, so
it doesn't show in a directory listing. On MS-Windows the "hidden"
@@ -3917,6 +3923,7 @@ A jump table for the options with a short description can be found at |Q_op|.
"8:SpecialKey,~:EndOfBuffer,@:NonText,
d:Directory,e:ErrorMsg,i:IncSearch,
l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,
+ a:LineNrAbove,b:LineNrBelow,
N:CursorLineNr,r:Question,s:StatusLine,
S:StatusLineNC,c:VertSplit,t:Title,
v:Visual,V:VisualNOS,w:WarningMsg,
@@ -3948,6 +3955,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|hl-ModeMsg| M Mode (e.g., "-- INSERT --")
|hl-LineNr| n line number for ":number" and ":#" commands, and
when 'number' or 'relativenumber' option is set.
+ |hl-LineNrAbove| a line number above the cursor for when the
+ 'relativenumber' option is set.
+ |hl-LineNrBelow| b line number below the cursor for when the
+ 'relativenumber' option is set.
|hl-CursorLineNr| N like n for when 'cursorline' or 'relativenumber' is
set.
|hl-Question| r |hit-enter| prompt and yes/no questions
@@ -5185,12 +5196,11 @@ A jump table for the options with a short description can be found at |Q_op|.
*'mouse'* *E538*
'mouse' string (default "", "a" for GUI, MS-DOS and Win32,
- set to "a" in |defaults.vim|)
+ set to "a" or "nvi" in |defaults.vim|)
global
- Enable the use of the mouse. Only works for certain terminals
- (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
- sysmouse and Linux console with gpm). For using the mouse in the
- GUI, see |gui-mouse|.
+ Enable the use of the mouse. Works for most terminals (xterm, MS-DOS,
+ Win32 |win32-mouse|, QNX pterm, *BSD console with sysmouse and Linux
+ console with gpm). For using the mouse in the GUI, see |gui-mouse|.
The mouse can be enabled for different modes:
n Normal mode and Terminal modes
v Visual mode
@@ -5201,7 +5211,15 @@ A jump table for the options with a short description can be found at |Q_op|.
r for |hit-enter| and |more-prompt| prompt
Normally you would enable the mouse in all five modes with: >
:set mouse=a
-< When the mouse is not enabled, the GUI will still use the mouse for
+< If your terminal can't overrule the mouse events going to the
+ application, use: >
+ :set mouse=nvi
+< The you can press ":", select text for the system, and press Esc to go
+ back to Vim using the mouse events.
+ In |defaults.vim| "nvi" is used if the 'term' option is not matching
+ "xterm".
+
+ When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn't move the text cursor.
See |mouse-using|. Also see |'clipboard'|.
@@ -6435,8 +6453,8 @@ A jump table for the options with a short description can be found at |Q_op|.
See |option-backslash| about including spaces and backslashes.
Environment variables are expanded |:set_env|.
- If the name of the shell contains a space, you might need to enclose
- it in quotes or escape the space. Example with quotes: >
+ If the name of the shell contains a space, you need to enclose it in
+ quotes and escape the space. Example: >
:set shell=\"c:\program\ files\unix\sh.exe\"\ -f
< Note the backslash before each quote (to avoid starting a comment) and
each space (to avoid ending the option value). Also note that the
@@ -6491,10 +6509,10 @@ A jump table for the options with a short description can be found at |Q_op|.
For Unix the default it "| tee". The stdout of the compiler is saved
in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the
- 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the
- default becomes "2>&1| tee". This means that stderr is also included.
- Before using the 'shell' option a path is removed, thus "/bin/sh" uses
- "sh".
+ 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
+ "bash" or "fish" the default becomes "2>&1| tee". This means that
+ stderr is also included. Before using the 'shell' option a path is
+ removed, thus "/bin/sh" uses "sh".
The initialization of this option is done after reading the ".vimrc"
and the other initializations, so that when the 'shell' option is set
there, the 'shellpipe' option changes automatically, unless it was
@@ -6534,13 +6552,14 @@ A jump table for the options with a short description can be found at |Q_op|.
The name of the temporary file can be represented by "%s" if necessary
(the file name is appended automatically if no %s appears in the value
of this option).
- The default is ">". For Unix, if the 'shell' option is "csh", "tcsh"
- or "zsh" during initializations, the default becomes ">&". If the
- 'shell' option is "sh", "ksh" or "bash" the default becomes
- ">%s 2>&1". This means that stderr is also included.
- For Win32, the Unix checks are done and additionally "cmd" is checked
- for, which makes the default ">%s 2>&1". Also, the same names with
- ".exe" appended are checked for.
+ The default is ">". For Unix, if the 'shell' option is "csh" or
+ "tcsh" during initializations, the default becomes ">&". If the
+ 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh",
+ "zsh-beta","bash" or "fish", the default becomes ">%s 2>&1". This
+ means that stderr is also included. For Win32, the Unix checks are
+ done and additionally "cmd" is checked for, which makes the default
+ ">%s 2>&1". Also, the same names with ".exe" appended are checked
+ for.
The initialization of this option is done after reading the ".vimrc"
and the other initializations, so that when the 'shell' option is set
there, the 'shellredir' option changes automatically unless it was
@@ -8682,6 +8701,8 @@ A jump table for the options with a short description can be found at |Q_op|.
complete first match.
"list:longest" When more than one match, list all matches and
complete till longest common string.
+ "list:lastused" When more than one buffer matches, sort buffers
+ by time last used (other than the current buffer).
When there is only a single match, it is fully completed in all cases.
Examples: >
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 9a75a95..9c8db6b 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt* For Vim version 8.1. Last change: 2019 Jul 17
+*pi_netrw.txt* For Vim version 8.1. Last change: 2019 Oct 10
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@@ -3512,7 +3512,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
- Click "Add..."
- Set External Editor (adjust path as needed, include
the quotes and !.! at the end):
- "c:\Program Files\Vim\vim70\gvim.exe" !.!
+ "c:\Program Files\Vim\vim81\gvim.exe" !.!
- Check that the filetype in the box below is
{asterisk}.{asterisk} (all files), or whatever types
you want (cec: change {asterisk} to * ; I had to
@@ -3762,8 +3762,8 @@ by obtaining a copy of the latest (often developmental) netrw at:
The <netrw.vim> script is typically installed on systems as something like:
>
- /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim
- /usr/local/share/vim/vim7x/autoload/netrw.vim
+ /usr/local/share/vim/vim8x/plugin/netrwPlugin.vim
+ /usr/local/share/vim/vim8x/autoload/netrw.vim
(see output of :echo &rtp)
<
which is loaded automatically at startup (assuming :set nocp). If you
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 04fa0a6..2ac54b6 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt* For Vim version 8.1. Last change: 2019 Sep 25
+*popup.txt* For Vim version 8.1. Last change: 2019 Oct 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -305,8 +305,9 @@ popup_findinfo() *popup_findinfo()*
Get the |window-ID| for the popup info window, as it used by
the popup menu. See |complete-popup|. The info popup is
hidden when not used, it can be deleted with |popup_clear()|
- and |popup_close()|.
- Return zero if there is none.
+ and |popup_close()|. Use |popup_show()| to reposition it to
+ the item in the popup menu.
+ Returns zero if there is none.
popup_findpreview() *popup_findpreview()*
@@ -314,7 +315,6 @@ popup_findpreview() *popup_findpreview()*
Return zero if there is none.
-
popup_getoptions({id}) *popup_getoptions()*
Return the {options} for popup {id} in a Dict.
A zero value means the option was not set. For "zindex" the
@@ -361,7 +361,7 @@ popup_getpos({id}) *popup_getpos()*
core_width width of the text box in screen cells
core_height height of the text box in screen cells
firstline line of the buffer at top (1 unless scrolled)
- (not the value of the "firstline" property)
+ (not the value of the "firstline" property)
scrollbar non-zero if a scrollbar is displayed
visible one if the popup is displayed, zero if hidden
Note that these are the actual screen positions. They differ
@@ -474,6 +474,8 @@ popup_notification({what}, {options}) *popup_notification()*
popup_show({id}) *popup_show()*
If {id} is a hidden popup, show it now.
For {id} see `popup_hide()`.
+ If {id} is the info popup it will be positioned next to the
+ current popup menu item.
popup_setoptions({id}, {options}) *popup_setoptions()*
@@ -680,8 +682,13 @@ The second argument of |popup_create()| is a dictionary with options:
- "expr": if the cursor moved outside |<cexpr>|
- [{start}, {end}]: if the cursor moved before column
{start} or after {end}
+ - [{lnum}, {start}, {end}]: if the cursor moved away
+ from line {lnum}, before column {start} or after
+ {end}
The popup also closes if the cursor moves to another
line or to another window.
+ mousemoved Like "moved" but referring to the mouse pointer
+ position
cursorline non-zero: Highlight the cursor line. Also scrolls the
text to show this line (only works properly
when 'wrap' is off).
@@ -744,22 +751,22 @@ is inserted or deleted. The popup functions like a tooltip.
These steps are needed to make this work:
- Define a text property type, it defines the name. >
- call prop_type_add('popupMarker', {})
+ call prop_type_add('popupMarker', {})
- Place a text property at the desired text: >
let lnum = {line of the text}
let col = {start column of the text}
let len = {length of the text}
let propId = {arbitrary but unique number}
- call prop_add(lnum, col, #{
+ call prop_add(lnum, col, #{
\ length: len,
\ type: 'popupMarker',
\ id: propId,
\ })
- Create a popup: >
- let winid = popup_create('the text', #{
- \ pos: 'botleft',
+ let winid = popup_create('the text', #{
+ \ pos: 'botleft',
\ textprop: 'popupMarker',
\ textpropid: propId,
\ border: [],
@@ -799,7 +806,7 @@ Some hints:
a click, as in the example above, helps for that.
- If the text property is removed the popup is closed. Use something like
this: >
- call prop_remove(#{type: 'popupMarker', id: propId})
+ call prop_remove(#{type: 'popupMarker', id: propId})
POPUP FILTER *popup-filter*
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index f2bc327..8c1943b 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt* For Vim version 8.1. Last change: 2019 Aug 06
+*quickfix.txt* For Vim version 8.1. Last change: 2019 Oct 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -486,7 +486,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
etc.
< When the current file can't be |abandon|ed and the [!]
is not present, the command fails.
- When an error is detected execution stops.
+ When going to the next entry fails execution stops.
The last buffer (or where an error occurred) becomes
the current buffer.
{cmd} can contain '|' to concatenate several commands.
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index fa15bca..76067f5 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -47,6 +47,7 @@ N is used to indicate an optional count that can be given before the command.
|g$| N g$ to last character in screen line (differs from "$"
when lines wrap)
|gm| gm to middle of the screen line
+|gM| gM to middle of the line
|bar| N | to column N (default: 1)
|f| N f{char} to the Nth occurrence of {char} to the right
|F| N F{char} to the Nth occurrence of {char} to the left
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 6365e36..99a99c4 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt* For Vim version 8.1. Last change: 2019 Sep 19
+*syntax.txt* For Vim version 8.1. Last change: 2019 Oct 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -60,8 +60,8 @@ If the VIM environment variable is not set, Vim will try to find
the path in another way (see |$VIMRUNTIME|). Usually this works just
fine. If it doesn't, try setting the VIM environment variable to the
directory where the Vim stuff is located. For example, if your syntax files
-are in the "/usr/vim/vim50/syntax" directory, set $VIMRUNTIME to
-"/usr/vim/vim50". You must do this in the shell, before starting Vim.
+are in the "/usr/vim/vim81/syntax" directory, set $VIMRUNTIME to
+"/usr/vim/vim81". You must do this in the shell, before starting Vim.
This command also sources the |menu.vim| script when the GUI is running or
will start soon. See |'go-M'| about avoiding that.
@@ -1158,6 +1158,26 @@ startup vimrc: >
:let filetype_w = "cweb"
+DART *dart.vim* *ft-dart-syntax*
+
+Dart is an object-oriented, typed, class defined, garbage collected language
+used for developing mobile, desktop, web, and back-end applications. Dart uses
+a C-like syntax derived from C, Java, and JavaScript, with features adopted
+from Smalltalk, Python, Ruby, and others.
+
+More information about the language and its development environment at the
+official Dart language website at https://dart.dev
+
+dart.vim syntax detects and highlights Dart statements, reserved words,
+type declarations, storage classes, conditionals, loops, interpolated values,
+and comments. There is no support idioms from Flutter or any other Dart
+framework.
+
+Changes, fixes? Submit an issue or pull request via:
+
+https://github.com/pr3d4t0r/dart-vim-syntax/
+
+
DESKTOP *desktop.vim* *ft-desktop-syntax*
Primary goal of this syntax file is to highlight .desktop and .directory files
@@ -5051,6 +5071,12 @@ IncSearch 'incsearch' highlighting; also used for the text replaced with
*hl-LineNr*
LineNr Line number for ":number" and ":#" commands, and when 'number'
or 'relativenumber' option is set.
+ *hl-LineNrAbove*
+LineNrAbove Line number for when the 'relativenumber'
+ option is set, above the cursor line.
+ *hl-LineNrBelow*
+LineNrBelow Line number for when the 'relativenumber'
+ option is set, below the cursor line.
*hl-CursorLineNr*
CursorLineNr Like LineNr when 'cursorline' is set and 'cursorlineopt' is
set to "number" or "both", or 'relativenumber' is set, for
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 091c968..f8f5a75 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1016,6 +1016,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
't_Sb' term.txt /*'t_Sb'*
't_Sf' term.txt /*'t_Sf'*
't_Si' term.txt /*'t_Si'*
+'t_TE' term.txt /*'t_TE'*
+'t_TI' term.txt /*'t_TI'*
't_Te' term.txt /*'t_Te'*
't_Ts' term.txt /*'t_Ts'*
't_VS' term.txt /*'t_VS'*
@@ -5048,6 +5050,7 @@ Terminal-Job terminal.txt /*Terminal-Job*
Terminal-Normal terminal.txt /*Terminal-Normal*
Terminal-mode terminal.txt /*Terminal-mode*
TerminalOpen autocmd.txt /*TerminalOpen*
+TerminalWinOpen autocmd.txt /*TerminalWinOpen*
TextChanged autocmd.txt /*TextChanged*
TextChangedI autocmd.txt /*TextChangedI*
TextChangedP autocmd.txt /*TextChangedP*
@@ -5311,6 +5314,7 @@ arglist-quit usr_07.txt /*arglist-quit*
arglistid() eval.txt /*arglistid()*
argument-list editing.txt /*argument-list*
argv() eval.txt /*argv()*
+argv-variable eval.txt /*argv-variable*
as motion.txt /*as*
asin() eval.txt /*asin()*
asm.vim syntax.txt /*asm.vim*
@@ -5788,8 +5792,10 @@ compl-vim insert.txt /*compl-vim*
compl-whole-line insert.txt /*compl-whole-line*
complete() eval.txt /*complete()*
complete-functions insert.txt /*complete-functions*
+complete-item-kind insert.txt /*complete-item-kind*
complete-items insert.txt /*complete-items*
complete-popup insert.txt /*complete-popup*
+complete-popuphidden insert.txt /*complete-popuphidden*
complete_CTRL-E insert.txt /*complete_CTRL-E*
complete_CTRL-Y insert.txt /*complete_CTRL-Y*
complete_add() eval.txt /*complete_add()*
@@ -5949,6 +5955,7 @@ daB motion.txt /*daB*
daW motion.txt /*daW*
dab motion.txt /*dab*
dap motion.txt /*dap*
+dart.vim syntax.txt /*dart.vim*
das motion.txt /*das*
date-functions usr_41.txt /*date-functions*
dav pi_netrw.txt /*dav*
@@ -6400,6 +6407,7 @@ ft-csh-syntax syntax.txt /*ft-csh-syntax*
ft-css-omni insert.txt /*ft-css-omni*
ft-cweb-syntax syntax.txt /*ft-cweb-syntax*
ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax*
+ft-dart-syntax syntax.txt /*ft-dart-syntax*
ft-dash-syntax syntax.txt /*ft-dash-syntax*
ft-desktop-syntax syntax.txt /*ft-desktop-syntax*
ft-dircolors-syntax syntax.txt /*ft-dircolors-syntax*
@@ -6807,6 +6815,7 @@ gF editing.txt /*gF*
gH visual.txt /*gH*
gI insert.txt /*gI*
gJ change.txt /*gJ*
+gM motion.txt /*gM*
gN visual.txt /*gN*
gP change.txt /*gP*
gQ intro.txt /*gQ*
@@ -7092,6 +7101,8 @@ hl-Folded syntax.txt /*hl-Folded*
hl-Ignore syntax.txt /*hl-Ignore*
hl-IncSearch syntax.txt /*hl-IncSearch*
hl-LineNr syntax.txt /*hl-LineNr*
+hl-LineNrAbove syntax.txt /*hl-LineNrAbove*
+hl-LineNrBelow syntax.txt /*hl-LineNrBelow*
hl-MatchParen syntax.txt /*hl-MatchParen*
hl-Menu syntax.txt /*hl-Menu*
hl-ModeMsg syntax.txt /*hl-ModeMsg*
@@ -7692,6 +7703,7 @@ modeless-selection gui.txt /*modeless-selection*
modeline options.txt /*modeline*
modeline-local options.txt /*modeline-local*
modeline-version options.txt /*modeline-version*
+modifyOtherKeys map.txt /*modifyOtherKeys*
moo.vim syntax.txt /*moo.vim*
more-compatible version5.txt /*more-compatible*
more-prompt message.txt /*more-prompt*
@@ -8087,7 +8099,6 @@ new-vimgrep version7.txt /*new-vimgrep*
new-virtedit version6.txt /*new-virtedit*
news intro.txt /*news*
nextnonblank() eval.txt /*nextnonblank()*
-nice todo.txt /*nice*
no-eval-feature eval.txt /*no-eval-feature*
no-type-checking eval.txt /*no-type-checking*
no_buffers_menu gui.txt /*no_buffers_menu*
@@ -9104,6 +9115,8 @@ t_ST term.txt /*t_ST*
t_Sb term.txt /*t_Sb*
t_Sf term.txt /*t_Sf*
t_Si term.txt /*t_Si*
+t_TE term.txt /*t_TE*
+t_TI term.txt /*t_TI*
t_Te term.txt /*t_Te*
t_Ts term.txt /*t_Ts*
t_VS term.txt /*t_VS*
@@ -9372,6 +9385,7 @@ termdebug_wide terminal.txt /*termdebug_wide*
terminal terminal.txt /*terminal*
terminal-api terminal.txt /*terminal-api*
terminal-client-server terminal.txt /*terminal-client-server*
+terminal-close terminal.txt /*terminal-close*
terminal-colors os_unix.txt /*terminal-colors*
terminal-communication terminal.txt /*terminal-communication*
terminal-cursor-style terminal.txt /*terminal-cursor-style*
@@ -9385,6 +9399,7 @@ terminal-functions usr_41.txt /*terminal-functions*
terminal-info term.txt /*terminal-info*
terminal-job-index index.txt /*terminal-job-index*
terminal-key-codes term.txt /*terminal-key-codes*
+terminal-mouse term.txt /*terminal-mouse*
terminal-ms-windows terminal.txt /*terminal-ms-windows*
terminal-options term.txt /*terminal-options*
terminal-output-codes term.txt /*terminal-output-codes*
@@ -9578,6 +9593,7 @@ utf-8-typing mbyte.txt /*utf-8-typing*
utf8 mbyte.txt /*utf8*
v visual.txt /*v*
v: eval.txt /*v:*
+v:argv eval.txt /*v:argv*
v:beval_bufnr eval.txt /*v:beval_bufnr*
v:beval_col eval.txt /*v:beval_col*
v:beval_lnum eval.txt /*v:beval_lnum*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 79debe3..1adc628 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt* For Vim version 8.1. Last change: 2019 May 07
+*term.txt* For Vim version 8.1. Last change: 2019 Oct 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -80,14 +80,19 @@ can do this best in your .vimrc. Example: >
<
*raw-terminal-mode*
For normal editing the terminal will be put into "raw" mode. The strings
-defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this
-puts the terminal in a state where the termcap codes are valid and activates
-the cursor and function keys. When Vim exits the terminal will be put back
-into the mode it was before Vim started. The strings defined with 't_te' and
-'t_ke' will be sent to the terminal. On the Amiga, with commands that execute
-an external command (e.g., "!!"), the terminal will be put into Normal mode
-for a moment. This means that you can stop the output to the screen by
-hitting a printing key. Output resumes when you hit <BS>.
+defined with 't_ti', 't_TI' and 't_ks' will be sent to the terminal. Normally
+this puts the terminal in a state where the termcap codes are valid and
+activates the cursor and function keys.
+When Vim exits the terminal will be put back into the mode it was before Vim
+started. The strings defined with 't_te', 't_TE' and 't_ke' will be sent to
+the terminal. On the Amiga, with commands that execute an external command
+(e.g., "!!"), the terminal will be put into Normal mode for a moment. This
+means that you can stop the output to the screen by hitting a printing key.
+Output resumes when you hit <BS>.
+
+Note: When 't_ti' is not empty, Vim assumes that it causes switching to the
+alternate screen. This may slightly change what happens when executing a
+shell command or exiting Vim. To avoid this use 't_TI' and 't_TE'.
*xterm-bracketed-paste*
When the 't_BE' option is set then 't_BE' will be sent to the
@@ -297,8 +302,8 @@ OUTPUT CODES *terminal-output-codes*
t_se standout end *t_se* *'t_se'*
t_so standout mode *t_so* *'t_so'*
t_sr scroll reverse (backward) *t_sr* *'t_sr'*
- t_te out of "termcap" mode *t_te* *'t_te'*
- t_ti put terminal in "termcap" mode *t_ti* *'t_ti'*
+ t_te end of "termcap" mode *t_te* *'t_te'*
+ t_ti put terminal into "termcap" mode *t_ti* *'t_ti'*
t_ts set window title start (to status line) *t_ts* *'t_ts'*
t_ue underline end *t_ue* *'t_ue'*
t_us underline mode *t_us* *'t_us'*
@@ -359,6 +364,8 @@ Added by Vim (there are no standard codes for these):
t_RT restore window title from stack *t_RT* *'t_RT'*
t_Si save icon text to stack *t_Si* *'t_Si'*
t_Ri restore icon text from stack *t_Ri* *'t_Ri'*
+ t_TE end of "raw" mode *t_TE* *'t_TE'*
+ t_TI put terminal into "raw" mode *t_TI* *'t_TI'*
Some codes have a start, middle and end part. The start and end are defined
by the termcap option, the middle part is text.
@@ -739,12 +746,21 @@ jump to tags).
Whether the selection that is started with the mouse is in Visual mode or
Select mode depends on whether "mouse" is included in the 'selectmode'
option.
-
+ *terminal-mouse*
In an xterm, with the currently active mode included in the 'mouse' option,
normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key
pressed go to the xterm. With the currently active mode not included in
'mouse' all mouse clicks go to the xterm.
+For terminals where it is not possible to have the mouse events be used by the
+terminal itself by using a modifier, a workaround is to not use mouse events
+for Vim in command-line mode: >
+ :set mouse=nvi
+Then to select text with the terminal, use ":" to go to command-line mode,
+select and copy the text to the system, then press Esc.
+
+Another way is to temporarily use ":sh" to run a shell, copy the text, then
+exit the shell. 'mouse' can remain set to "a" then.
*xterm-clipboard*
In the Athena and Motif GUI versions, when running in a terminal and there is
access to the X-server (DISPLAY is set), the copy and paste will behave like
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index ab26631..db126de 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 8.1. Last change: 2019 Sep 26
+*terminal.txt* For Vim version 8.1. Last change: 2019 Nov 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -193,6 +193,7 @@ Command syntax ~
Supported [options] are:
++close The terminal window will close
automatically when the job terminates.
+ |terminal-close|
++noclose The terminal window will NOT close
automatically when the job terminates.
++open When the job terminates and no window
@@ -267,6 +268,12 @@ hidden, the job keeps running. The `:buffer` command can be used to turn the
current window into a terminal window. If there are unsaved changes this
fails, use ! to force, as usual.
+ *terminal-close*
+When the terminal window is closed, e.g. when the shell exits and "++close"
+argument was used, and this is the last normal Vim window, then Vim will exit.
+This is like using |:quit| in a normal window. Help and preview windows are
+not counted.
+
To have a background job run without a window, and open the window when it's
done, use options like this: >
:term ++hidden ++open make
@@ -496,7 +503,7 @@ term_dumpload({filename} [, {options}])
For {options} see |term_dumpdiff()|.
Can also be used as a |method|: >
- GetFilename()-> term_dumpload()
+ GetFilename()->term_dumpload()
<
*term_dumpwrite()*
term_dumpwrite({buf}, {filename} [, {options}])
@@ -514,7 +521,7 @@ term_dumpwrite({buf}, {filename} [, {options}])
Can also be used as a |method|, the base is used for the file
name: >
- GetFilename()-> term_dumpwrite(bufnr)
+ GetFilename()->term_dumpwrite(bufnr)
term_getaltscreen({buf}) *term_getaltscreen()*
Returns 1 if the terminal of {buf} is using the alternate
@@ -863,8 +870,6 @@ term_start({cmd} [, {options}]) *term_start()*
Can also be used as a |method|: >
GetCommand()->term_start()
-< {only available when compiled with the |+terminal| feature}
-
term_wait({buf} [, {time}]) *term_wait()*
Wait for pending updates of {buf} to be handled.
@@ -1168,8 +1173,12 @@ Example session ~
*termdebug-example*
Start in the Vim "src" directory and build Vim: >
% make
+Make sure that debug symbols are present, usually that means that $CFLAGS
+includes "-g".
+
Start Vim: >
% ./vim
+
Load the termdebug plugin and start debugging Vim: >
:packadd termdebug
:Termdebug vim
@@ -1243,7 +1252,7 @@ gdb:
*:Break* set a breakpoint at the cursor position
:Break {position}
- set a breakpoint at the specified position
+ set a breakpoint at the specified position
*:Clear* delete the breakpoint at the cursor position
*:Step* execute the gdb "step" command
diff --git a/runtime/doc/textprop.txt b/runtime/doc/textprop.txt
index f637d4c..9cf8227 100644
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -1,4 +1,4 @@
-*textprop.txt* For Vim version 8.1. Last change: 2019 Sep 04
+*textprop.txt* For Vim version 8.1. Last change: 2019 Oct 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -6,13 +6,6 @@
Displaying text with properties attached. *textprop* *text-properties*
-THIS IS UNDER DEVELOPMENT - ANYTHING MAY STILL CHANGE *E967*
-
-What is not working yet:
-- Adjusting column/length when inserting text
-- Text properties spanning more than one line
-- prop_find()
-
1. Introduction |text-prop-intro|
2. Functions |text-prop-functions|
@@ -94,6 +87,12 @@ and/or ends with a specific character, such as the quote surrounding a string.
Nevertheless, when text is inserted or deleted the text may need to be parsed
and the text properties updated. But this can be done asynchronously.
+
+Internal error *E967*
+
+If you see E967, please report the bug. You can do this at Github:
+https://github.com/vim/vim/issues/new
+
==============================================================================
2. Functions *text-prop-functions*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 59a2f9d..7147c5c 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 8.1. Last change: 2019 Sep 27
+*todo.txt* For Vim version 8.1. Last change: 2019 Nov 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,17 +38,31 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
-'completeopt' "popup" variant that uses a callback after the popup has been
-created, so the contents can be changed. Make it hidden, callback
-or later has to make it visible. #4924 Setting the buffer contents later
-doesn't work well.
+Termdebug: Ctrl-W . doesn't work with modifyOtherKeys set.
+
+Cannot scroll popup window with mouse in GUI? (#5138)
+
+Add a way to make ":term cmd" run "cmd" in a shell, instead of executing it
+directly. Perhaps ":term ++shell cmd". (issue #3340)
+
+Include netrw 166a?
+
+In a function these two lines are different:
+ let [a, b, c] =<< trim END fails
+ let [a,b,c] =<< trim END works
+issue #5051
+
+Make 'showbreak' global-local.
+
+Update libvterm on github, rename termscreen.c back to screen.c.
+
+Graduate FEAT_TAG_BINS and make LSIZE for tags bigger.
Popup windows:
+- When using "botleft" for "pos" and there is not enough space, positioning
+ goes below, but this must not happen if there is less space there. #5151
- Use popup (or popup menu) for command line completion
- Implement flip option
-- Why does 'nrformats' leak from the popup window buffer???
- Happens in Test_simple_popup() at the second screendump.
-- For the "moved" property also include mouse movement?
- Make redrawing more efficient and avoid flicker:
- put popup menu also in popup_mask?
- Any other commands to disable in a popup window?
@@ -59,12 +73,15 @@ Popup windows:
- When drawing on top half a double-wide character, display ">" or "<" in the
incomplete cell.
-Text properties: See comment at top of src/textprop.c.
-- Implement prop_find() #4970
+Text properties:
+- Implement prop_find() issue #4970
+- Adjusting column/length when inserting text
+- Text properties spanning more than one line
+- See remakrs at top of src/textprop.c
-'incsearch' with :s: (#3321)
+'incsearch' with :s:
- Get E20 when using command history to get "'<,'>s/a/b" and no Visual area
- was set. (#3837)
+ was set. (issue #3837)
- :s/foo using CTRL-G moves to another line, should not happen, or use the
correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345)
- :s@pat/tern@ doesn't include "/" in the pattern. (Takahiro Yoshihara, #3637)
@@ -76,7 +93,7 @@ Text properties: See comment at top of src/textprop.c.
Then :%s?foo should take the first match above the cursor line.
Prompt buffer:
-- Add a command line history.
+- Add a command line history, using up/down keys. issue #5010
- delay next prompt until plugin gives OK?
- add prompt_addtext({buf}, {expr}) none add text to a prompt buffer
@@ -89,15 +106,13 @@ Terminal debugger:
- Termdebug does not work when Vim was build with mzscheme: gdb hangs just
after "run". Everything else works, including communication channel. Not
initializing mzscheme avoid the problem, thus it's not some #ifdef.
-- Add support for lldb? #3565
+- Add support for lldb? issue #3565
- Could we do something similar for debugging Vim scripts? At least see the
script while stepping through it. Simple version would use an extra window.
More complete solution would actually run Vim in a Terminal and control it
with another Vim instance.
Terminal emulator window:
-- When typing "exit" in a terminal window with a shell and it's the only
- window, should exit Vim instead of editing another buffer. (#4539)
- When the job in the terminal doesn't use mouse events, let the scroll wheel
scroll the scrollback, like a terminal does at the shell prompt. #2490
And use modeless selection. #2962
@@ -109,8 +124,6 @@ Terminal emulator window:
- Allow for specifying the directory, with ++cwd={dir}.
- With a vertical split only one window is updated. (Linwei, 2018 Jun 2,
#2977)
-- Add a way to make ":term cmd" run "cmd" in a shell, instead of executing it
- directly. Perhaps ":term ++shell cmd". (#3340)
- When pasting should call vterm_keyboard_start_paste(), e.g. when using
K_MIDDLEMOUSE, calling insert_reg().
- Users expect parsing the :term argument like a shell does, also support
@@ -139,10 +152,8 @@ manager. Problem with Motif? Now test_gui crashes in submenu_change().
Athena is OK.
Motif: Build on Ubuntu can't enter any text in dialog text fields.
-Improve running tests on MS-Windows: #4922
-
-Patch to properly break CJK lines: #3875
-Ready to include now?
+Patch to properly break CJK lines: Anton Kochkov, #3875
+Flag in 'formatoptions' is not used in the tests.
Remove check for cmd_silent when calling search_stat()? (Gary Johnson)
@@ -152,17 +163,15 @@ Undo puts cursor in wrong line after "cG<Esc>" undo.
Sound: support on Mac? Or does libcanberra work there?
-Patch for #4733: #4734. Test needs improvements.
-
-Patch to sort buffers on b_last_used time. (Andy Massimino, #4722)
-
-Patch to highlight the line number differently below the cursor line. (Shaun
-Brady, #624)
+Patch to user manual: #5098. Comments by DC Slagel:
+- semicolon use should be OK.
+- Keep capital after colon.
Patch to fix session file when using multiple tabs. (Jason Franklin, 2019 May
20)
Also put :argadd commands at the start for all buffers, so that their order
remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
+Also #4994: window-local options not always restored, related to using :badd.
Completion mixes results from the current buffer with tags and other files.
Happens when typing CTRL-N while still search for results. E.g., type "b_" in
@@ -170,32 +179,25 @@ terminal.c and then CTRL-N twice.
Should do current file first and not split it up when more results are found.
(Also #1890)
-Patch to use timers in matchparen. (Daniel Hahler, #1338)
-Ready to include now?
-
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
(#4087)
+":helptags ALL" should skip directories where "tags" cannot be written.
+(Matěj Cepl, #5026)
+
":bnext" in a help buffer is supposed to go to the next help buffer, but it
goes to any buffer, and then :bnext skips help buffers, since they are
unlisted. (#4478)
-Patch to fix using zero sc_sid. (#4877)
+Enable 'termbidi' if $VTE_VERSION >= 5703 ?
Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126
-Make 'showbreak' global-local.
-
The :syntax cchar value can only be a single character. It would be useful to
support combining characters. (Charles Campbell) Also #4687
-Patch to make gM move to middle of line. (Yasuhiro Matsumoto, Sep 8, #2070)
-
-Patch to add v:argv, arguments that Vim was started with. (Dmitri
-Vereshchagin, #1322)
-
-New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652)
+Patch: New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652)
Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
It can replace the BeOS code, which is likely not used anymore.
@@ -212,8 +214,6 @@ Patch to remove FORTIFY_SOURCE also from CPPFLAGS. (Benedikt Morbach, #2786)
Patch from Namsh to allow building with both XIM and hangulin. (2019 Aug 29)
-Patch to fix redirect of shell on MS-Windows. (Yasuhiro Matsumoto, #2054)
-
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
@@ -243,6 +243,14 @@ Patch to configure BUILD_DATE for reproducible builds. (James McCoy, #513)
Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)
+xterm should be able to pass focus changes to Vim, so that Vim can check for
+buffers that changed. Perhaps in misc.c, function selectwindow().
+Xterm 224 supports it!
+Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki
+Saito, 2013 Apr 24) Update 2016 Aug 12.
+Also see issue #609.
+We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke.
+
Check_external_diff() is used too often. (Daniel Hahler, #4800)
Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
@@ -297,8 +305,12 @@ Williams, 2018 Oct 30)
"exepath('bin/cmd')" does not work while ":!bin/cmd" does work.
(Daniel Hahler, #4710) and executable('bin/cmd') returns 1
+Error drawing the number column when 'cursorline' is set. (#3893)
+
Problem with :tlmenu: Detach item added with all modes? Issue #3563.
+Add an argument to expandcmd() to expand like ":next" does.
+
The quoting of the [command] argument of :terminal is not clearly documented.
Give a few examples. (#4288)
@@ -314,7 +326,11 @@ Bug: script written with "-W scriptout" contains Key codes, while the script
read with "-s scriptin" expects escape codes. Probably "scriptout" needs to
be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041)
-":registers" should indicate char/block/linewise. (Ayberk Aydin, #4546)
+Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
+CTRL-Y scroll one screen line, also if this means the first line doesn't start
+with the first character (like what happens with a last line that doesn't
+fit). Display "<<<" at the start of the first visible line (like "@@@" is
+displayed in the last line). (Arseny Nasokin, #5154)
Patch for ambiguous width characters in libvterm on MS-Windows 10.
(Nobuhiro Takasaki, #4411)
@@ -592,6 +608,9 @@ Merge checking for 'cursorline' and 'concealcursor', see neovim #9492.
Display error when a conceal match uses '\%>1l'. (#4854)
+Add a windowID argument to placing a sign, so that it only shows up in one
+window for the buffer.
+
Request to add sign_setlist() to make it faster to add a lot of signs, e.g.
when adding a sign for every quickfix entry. (#4557)
@@ -1126,6 +1145,9 @@ sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
+channel:
- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi)
+- Add ch_readlines(): for a channel in NL mode, reads as many lines as are
+ available. Should be more efficient than looping over ch_read() with
+ ch_status() to check for more.
- Add a separate timeout for opening a socket. Currently it's fixed at 50
msec, which is too small for a remote connection. (tverniquet, #2130)
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
@@ -1604,14 +1626,6 @@ compatible with Vim spell files. The old files can no longer be downloaded.
Spell checking: Add a feature to only consider two spaces after a dot to start
a new sentence. Don't give the capitalization error when there is one space.
-xterm should be able to pass focus changes to Vim, so that Vim can check for
-buffers that changed. Perhaps in misc.c, function selectwindow().
-Xterm 224 supports it!
-Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki
-Saito, 2013 Apr 24) Update 2016 Aug 12.
-Also see issue #609.
-We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke.
-
Idea: For a window in the middle (has window above and below it), use
right-mouse-drag on the status line to move a window up/down without changing
its height? It's like dragging the status bar above it at the same time.
@@ -2155,10 +2169,6 @@ Looks like only bash can do it. (Yakov Lerner)
Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010
Jun 29) Caused by 7.2.433?
-I often see pasted text (from Firefox, to Vim in xterm) appear twice.
-Also, Vim in xterm sometimes loses copy/paste ability (probably after running
-an external command).
-
Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20)
Problem with transparent cmdline. Also: Terminal title is wrong with
@@ -2754,10 +2764,6 @@ If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
Feature request: Command to go to previous tab, like what CTRL-W p does for
windows. (Adam George)
-F1 - F4 in an xterm produce a different escape sequence when used with a
-modifier key. Need to catch three different sequences. Use K_ZF1, like
-K_ZHOME? (Dickey, 2007 Dec 2)
-
In debug mode, using CTRL-R = to evaluate a function causes stepping through
the function. (Hari Krishna Dara, 2006 Jun 28)
@@ -2892,12 +2898,6 @@ Setting 'background' resets the Normal background color:
This is undesired, 'background' is supposed to tell Vim what the background
color is, not reset it.
-Linux distributions:
-- Suggest compiling xterm with --enable-tcap-query, so that nr of colors is
- known to Vim. 88 colors instead of 16 works better. See ":help
- xfree-xterm".
-- Suggest including bare "vi" and "vim" with X11, syntax, etc.
-
Completion menu: For a wrapping line, completing a long file name, only the
start of the path is shown in the menu. Should move the menu to the right to
show more text of the completions. Shorten the items that don't fit in the
@@ -2912,12 +2912,6 @@ the buffer is displayed. (Antonios Tsakiridis)
When ":cn" moves to an error in the same line the message isn't shortened.
Only skip shortening for ":cc"?
-Write "making vim work better" for the docs (mostly pointers): *nice*
- - sourcing $VIMRUNTIME/vimrc_example.vim
- - setting 'mouse' to "a"
- - getting colors in xterm
- - compiling Vim with X11, GUI, etc.
-
Problem with ":call" and dictionary function. Hari Krishna Dara, Charles
Campbell 2006 Jul 06.
@@ -3011,11 +3005,6 @@ When 'encoding' is utf-8 typing text at the end of the line causes previously
typed characters to be redrawn. Caused by patch 7.1.329. (Tyler Spivey, 2008
Sep 3, 11)
-When Vim in an xterm owns the selection and the user does ":shell" Vim doesn't
-respond to selection requests. Invoking XtDisownSelection() before executing
-the shell doesn't help. Would require forking and doing a message loop, like
-what happens for the GUI.
-
":vimgrep" does not recognize a recursive symlink. Is it possible to detect
this, at least for Unix (using device/inode)?
@@ -3104,11 +3093,6 @@ Awaiting updated patches:
use the patch that keeps using HLF_8 if HLF_WS has not
been given values.
Add section in help files for these highlight groups?
-8 "fg" and "bg" don't work in an xterm. Get default colors from xterm
- with an ESC sequence.
- xterm can send colors for many things. E.g. for the cursor:
- <Esc>]12;?<Bel>
- Can use this to get the background color and restore the colors on exit.
7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin
Dalecki has a patch for Motif and Carbon)
- Add possibility to highlight specific columns (for Fortran). Or put a
@@ -3702,7 +3686,6 @@ Macintosh:
8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also
recognize these keys? Mostly useful for xterm simulators, like gnometerm.
See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style.
-8 For xterm also recognize keypad up/down/left/right and insert.
8 '[ and '] should be set to start/end of line when using a linewise operator
(e.g., ":w").
8 CTRL-A can't handle big "long" numbers, they become negative. Check for
@@ -3717,10 +3700,6 @@ Macintosh:
filesystem, an illegal file name may be created: ".vim".
8 For each buffer that is opened, the viminfo file is opened and read to
check for file marks. This can be slow.
-7 In xterm, recognize both vt100 and vt220 cursor keys. Change
- add_termcode() to not remove an existing entry for a name, when it's
- needed.
- Need a generic solution to recognize different codes for the same key.
8 Core dump within signal function: gdb doesn't show stack backtrace! Option
to skip catch_signals()?
9 Repeating a "cw" with "." doesn't work if the text was pasted from the
@@ -4652,9 +4631,6 @@ Messages:
Screen updating:
-7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one
- screen line, also if this means the first line doesn't start with the
- first character (like what happens with a single line that doesn't fit).
- screen_line():
- insert/delete character stuff.
- improve delete rest of line (spaces at end of line).
diff --git a/runtime/doc/usr_25.txt b/runtime/doc/usr_25.txt
index 7f65a85..1f71f3e 100644
--- a/runtime/doc/usr_25.txt
+++ b/runtime/doc/usr_25.txt
@@ -346,12 +346,13 @@ scroll:
g0 to first visible character in this line
g^ to first non-blank visible character in this line
- gm to middle of this line
+ gm to middle of screen line
+ gM to middle of the text in this line
g$ to last visible character in this line
- |<-- window -->|
- some long text, part of which is visible ~
- g0 g^ gm g$
+ |<-- window -->|
+ some long text, part of which is visible in one line ~
+ g0 g^ gm gM g$
BREAKING AT WORDS *edit-no-break*
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 8f3d946..386dd9b 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt* For Vim version 8.1. Last change: 2019 Sep 28
+*various.txt* For Vim version 8.1. Last change: 2019 Oct 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -389,7 +389,7 @@ m *+lua/dyn* |Lua| interface |/dyn|
N *+menu* |:menu|
N *+mksession* |:mksession|
T *+modify_fname* |filename-modifiers|
-N *+mouse* Mouse handling |mouse-using|
+T *+mouse* Mouse handling |mouse-using|
N *+mouseshape* |'mouseshape'|
B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse|
N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse|
@@ -575,6 +575,8 @@ N *+X11* Unix only: can restore window title |X11|
|:marks| - filter by text in the current file,
or file name for other files
|:oldfiles| - filter by file name
+ |:registers| - filter by register contents
+ (does not work multi-line)
|:set| - filter by variable name
Only normal messages are filtered, error messages are
diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt
index 8872103..82f6274 100644
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -1,4 +1,4 @@
-*vi_diff.txt* For Vim version 8.1. Last change: 2019 Sep 27
+*vi_diff.txt* For Vim version 8.1. Last change: 2019 Oct 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -64,6 +64,9 @@ w300 number (default 23) *'w300'*
w1200 number (default 23) *'w1200'*
w9600 number (default 23) *'w9600'*
+Vi did not allow for changing the termcap entries, you would have to exit Vi,
+edit the termcap entry and try again. Vim has the |terminal-options|.
+
==============================================================================
3. Limits *limits*
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index d999962..38485f2 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 8.1. Last change: 2019 Aug 18
+*windows.txt* For Vim version 8.1. Last change: 2019 Oct 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -312,6 +312,9 @@ CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
:+quit " quit the next window
:+2quit " quit the second next window
<
+ When closing a help window, Vim will try to restore the
+ previous window layout |:helpclose|.
+
:q[uit]!
:{count}q[uit]!
Without {count}: Quit the current window. If {count} is
@@ -545,6 +548,10 @@ CTRL-W + Increase current window height by N (default 1).
CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
CTRL-W _ Set current window height to N (default: highest possible).
+:{winnr}res[ize] [+-]N
+ Like `:resize` above, but apply the size to window {winnr}
+ instead of the current window.
+
z{nr}<CR> Set current window height to {nr}.
*CTRL-W_<*
@@ -1087,6 +1094,7 @@ list of buffers. |unlisted-buffer|
R terminal buffers with a running job
F terminal buffers with a finished job
? terminal buffers without a job: `:terminal NONE`
+ t show time last used and sort buffers
Combining flags means they are "and"ed together, e.g.:
h+ hidden buffers which are modified
a+ active buffers which are modified
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index fce4825..dc1ed79 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2019 Sep 27
+" Last Change: 2019 Nov 01
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -384,8 +384,8 @@ au BufNewFile,BufRead configure.in,configure.ac setf config
" CUDA Cumpute Unified Device Architecture
au BufNewFile,BufRead *.cu,*.cuh setf cuda
-" Dockerfile
-au BufNewFile,BufRead Dockerfile,*.Dockerfile setf dockerfile
+" Dockerfilb; Podman uses the same syntax with name Containerfile
+au BufNewFile,BufRead Containerfile,Dockerfile,*.Dockerfile setf dockerfile
" WildPackets EtherPeek Decoder
au BufNewFile,BufRead *.dcd setf dcd
@@ -425,6 +425,9 @@ au BufNewFile,BufRead *.csp,*.fdr setf csp
au BufNewFile,BufRead *.pld setf cupl
au BufNewFile,BufRead *.si setf cuplsim
+" Dart
+au BufRead,BufNewfile *.dart,*.drt setf dart
+
" Debian Control
au BufNewFile,BufRead */debian/control setf debcontrol
au BufNewFile,BufRead control
@@ -979,6 +982,9 @@ au BufNewFile,BufRead hg-editor-*.txt setf hgcommit
" Mercurial config (looks like generic config file)
au BufNewFile,BufRead *.hgrc,*hgrc setf cfg
+" Meson Build system config
+au BufNewFile,BufRead meson.build,meson_options.txt setf meson
+
" Messages (logs mostly)
au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages
diff --git a/runtime/ftplugin/meson.vim b/runtime/ftplugin/meson.vim
new file mode 100644
index 0000000..e432ebf
--- /dev/null
+++ b/runtime/ftplugin/meson.vim
@@ -0,0 +1,19 @@
+" Vim filetype plugin file
+" Language: meson
+" License: VIM License
+" Original Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+" Last Change: 2018 Nov 27
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+setlocal commentstring=#\ %s
+setlocal comments=:#
+
+setlocal shiftwidth=2
+setlocal softtabstop=2
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop
index 7805cd5..044852b 100644
--- a/runtime/gvim.desktop
+++ b/runtime/gvim.desktop
@@ -4,16 +4,19 @@
# Translators: This is the Application Name used in the GVim desktop file
Name[de]=GVim
Name[eo]=GVim
+Name[tr]=GVim
Name=GVim
# Translators: This is the Generic Application Name used in the Vim desktop file
GenericName[de]=Texteditor
GenericName[eo]=Tekstoredaktilo
GenericName[ja]=テキストエディタ
+GenericName[tr]=Metin Düzenleyici
GenericName=Text Editor
# Translators: This is the comment used in the Vim desktop file
Comment[de]=Textdateien bearbeiten
Comment[eo]=Redakti tekstajn dosierojn
Comment[ja]=テキストファイルを編集します
+Comment[tr]=Metin dosyaları düzenle
Comment=Edit text files
# The translations should come from the po file. Leave them here for now, they will
# be overwritten by the po file when generating the desktop.file!
@@ -82,7 +85,6 @@ Comment[sv]=Redigera textfiler
Comment[ta]=உரை கோப்புகளை தொகுக்கவும்
Comment[th]=แก้ไขแฟ้มข้อความ
Comment[tk]=Metin faýllary editle
-Comment[tr]=Metin dosyalarını düzenle
Comment[uk]=Редактор текстових файлів
Comment[vi]=Soạn thảo tập tin văn bản
Comment[wa]=Asspougnî des fitchîs tecses
@@ -96,6 +98,7 @@ Type=Application
Keywords[de]=Text;Editor;
Keywords[eo]=Teksto;redaktilo;
Keywords[ja]=テキスト;エディタ;
+Keywords[tr]=Metin;düzenleyici;
Keywords=Text;editor;
# Translators: This is the Icon file name. Do NOT translate
Icon[de]=gvim
diff --git a/runtime/indent/meson.vim b/runtime/indent/meson.vim
new file mode 100644
index 0000000..f116781
--- /dev/null
+++ b/runtime/indent/meson.vim
@@ -0,0 +1,180 @@
+" Vim indent file
+" Language: Meson
+" License: VIM License
+" Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
+" Original Authors: David Bustos <bustos@caltech.edu>
+" Bram Moolenaar <Bram@vim.org>
+" Last Change: 2019 Oct 18
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" Some preliminary settings
+setlocal nolisp " Make sure lisp indenting doesn't supersede us
+setlocal autoindent " indentexpr isn't much help otherwise
+
+setlocal indentexpr=GetMesonIndent(v:lnum)
+setlocal indentkeys+==elif,=else,=endforeach,=endif,0)
+
+" Only define the function once.
+if exists("*GetMesonIndent")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Come here when loading the script the first time.
+
+let s:maxoff = 50 " maximum number of lines to look backwards for ()
+
+function GetMesonIndent(lnum)
+ echom getline(line("."))
+
+ " If this line is explicitly joined: If the previous line was also joined,
+ " line it up with that one, otherwise add two 'shiftwidth'
+ if getline(a:lnum - 1) =~ '\\$'
+ if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$'
+ return indent(a:lnum - 1)
+ endif
+ return indent(a:lnum - 1) + (exists("g:mesonindent_continue") ? eval(g:mesonindent_continue) : (shiftwidth() * 2))
+ endif
+
+ " If the start of the line is in a string don't change the indent.
+ if has('syntax_items')
+ \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$"
+ return -1
+ endif
+
+ " Search backwards for the previous non-empty line.
+ let plnum = prevnonblank(v:lnum - 1)
+
+ if plnum == 0
+ " This is the first non-empty line, use zero indent.
+ return 0
+ endif
+
+ " If the previous line is inside parenthesis, use the indent of the starting
+ " line.
+ " Trick: use the non-existing "dummy" variable to break out of the loop when
+ " going too far back.
+ call cursor(plnum, 1)
+ let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
+ \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
+ \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ if parlnum > 0
+ let plindent = indent(parlnum)
+ let plnumstart = parlnum
+ else
+ let plindent = indent(plnum)
+ let plnumstart = plnum
+ endif
+
+
+ " When inside parenthesis: If at the first line below the parenthesis add
+ " a 'shiftwidth', otherwise same as previous line.
+ " i = (a
+ " + b
+ " + c)
+ call cursor(a:lnum, 1)
+ let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
+ \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
+ \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ if p > 0
+ if p == plnum
+ " When the start is inside parenthesis, only indent one 'shiftwidth'.
+ let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
+ \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
+ \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ if pp > 0
+ return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth())
+ endif
+ return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : shiftwidth())
+ endif
+ if plnumstart == p
+ return indent(plnum)
+ endif
+ return plindent
+ endif
+
+
+ " Get the line and remove a trailing comment.
+ " Use syntax highlighting attributes when possible.
+ let pline = getline(plnum)
+ let pline_len = strlen(pline)
+ if has('syntax_items')
+ " If the last character in the line is a comment, do a binary search for
+ " the start of the comment. synID() is slow, a linear search would take
+ " too long on a long line.
+ if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$"
+ let min = 1
+ let max = pline_len
+ while min < max
+ let col = (min + max) / 2
+ if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$"
+ let max = col
+ else
+ let min = col + 1
+ endif
+ endwhile
+ let pline = strpart(pline, 0, min - 1)
+ endif
+ else
+ let col = 0
+ while col < pline_len
+ if pline[col] == '#'
+ let pline = strpart(pline, 0, col)
+ break
+ endif
+ let col = col + 1
+ endwhile
+ endif
+
+ " If the previous line ended the conditional/loop
+ if getline(plnum) =~ '^\s*\(endif\|endforeach\)\>\s*'
+ " Maintain indent
+ return -1
+ endif
+
+ " If the previous line ended with a builtin, indent this line
+ if pline =~ '^\s*\(foreach\|if\|else\|elif\)\>\s*'
+ return plindent + shiftwidth()
+ endif
+
+ " If the current line begins with a header keyword, deindent
+ if getline(a:lnum) =~ '^\s*\(else\|elif\|endif\|endforeach\)'
+
+ " Unless the previous line was a one-liner
+ if getline(plnumstart) =~ '^\s*\(foreach\|if\)\>\s*'
+ return plindent
+ endif
+
+ " Or the user has already dedented
+ if indent(a:lnum) <= plindent - shiftwidth()
+ return -1
+ endif
+
+ return plindent - shiftwidth()
+ endif
+
+ " When after a () construct we probably want to go back to the start line.
+ " a = (b
+ " + c)
+ " here
+ if parlnum > 0
+ return plindent
+ endif
+
+ return -1
+
+endfunction
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:sw=2
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 3df6abb..d2fb1ba 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -3,7 +3,7 @@
" Maintainer: Christian Brabandt <cb@256bit.org>
" Original Author: Nikolai Weibull <now@bitwi.se>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
-" Latest Revision: 2019-07-26
+" Latest Revision: 2019-10-24
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog:
@@ -134,7 +134,7 @@ function! GetShIndent()
" TODO: should we do the same for other "end" lines?
if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$'
let ind = indent(v:lnum)
- let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment"')
+ let previous_line = searchpair('\<if\>', '', '\<fi\>\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"')
if previous_line > 0
let ind = indent(previous_line)
endif
@@ -195,7 +195,7 @@ endfunction
function! s:is_function_definition(line)
return a:line =~ '^\s*\<\k\+\>\s*()\s*{' ||
\ a:line =~ '^\s*{' ||
- \ a:line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{'
+ \ a:line =~ '^\s*function\s*\k\+\s*\%(()\)\?\s*{'
endfunction
function! s:is_array(line)
diff --git a/runtime/indent/testdir/vim.in b/runtime/indent/testdir/vim.in
index ca105f6..235f31d 100644
--- a/runtime/indent/testdir/vim.in
+++ b/runtime/indent/testdir/vim.in
@@ -44,3 +44,18 @@ let f = x
" prev-line
endfunc
" END_INDENT
+
+" START_INDENT
+let a =<< END
+nothing
+END
+" END_INDENT
+
+" START_INDENT
+" INDENT_AT this-line
+let a=<< trim END
+ blah
+ blah
+ blah this-line
+END
+" END_INDENT
diff --git a/runtime/indent/testdir/vim.ok b/runtime/indent/testdir/vim.ok
index 542861e..61369d4 100644
--- a/runtime/indent/testdir/vim.ok
+++ b/runtime/indent/testdir/vim.ok
@@ -44,3 +44,18 @@ func Some()
" prev-line
endfunc
" END_INDENT
+
+" START_INDENT
+let a =<< END
+ nothing
+END
+" END_INDENT
+
+" START_INDENT
+" INDENT_AT this-line
+let a=<< trim END
+ blah
+ blah
+ blah this-line
+END
+" END_INDENT
diff --git a/runtime/indent/testdir/yaml.in b/runtime/indent/testdir/yaml.in
new file mode 100644
index 0000000..e3d77e2
--- /dev/null
+++ b/runtime/indent/testdir/yaml.in
@@ -0,0 +1,14 @@
+# vim: set ft=yaml sw=2 et :
+
+# START_INDENT
+map1:
+sub1:
+- list item
+map2:
+- another list
+# END_INDENT
+
+# START_INDENT
+map: &anchor
+map: val
+# END_INDENT
diff --git a/runtime/indent/testdir/yaml.ok b/runtime/indent/testdir/yaml.ok
new file mode 100644
index 0000000..b97b2e5
--- /dev/null
+++ b/runtime/indent/testdir/yaml.ok
@@ -0,0 +1,14 @@
+# vim: set ft=yaml sw=2 et :
+
+# START_INDENT
+map1:
+ sub1:
+ - list item
+map2:
+ - another list
+# END_INDENT
+
+# START_INDENT
+map: &anchor
+map: val
+# END_INDENT
diff --git a/runtime/indent/typescript.vim b/runtime/indent/typescript.vim
index 69accaa..b6b2cb5 100644
--- a/runtime/indent/typescript.vim
+++ b/runtime/indent/typescript.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: TypeScript
" Maintainer: See https://github.com/HerringtonDarkholme/yats.vim
-" Last Change: 2019 Jun 06
+" Last Change: 2019 Oct 18
" Acknowledgement: Based off of vim-ruby maintained by Nikolai Weibull http://vim-ruby.rubyforge.org
" 0. Initialization {{{1
@@ -442,7 +442,7 @@ let &cpo = s:cpo_save
unlet s:cpo_save
function! Fixedgq(lnum, count)
- let l:tw = &tw ? &tw : 80;
+ let l:tw = &tw ? &tw : 80
let l:count = a:count
let l:first_char = indent(a:lnum) + 1
diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim
index cd735c3..db27f19 100644
--- a/runtime/indent/vim.vim
+++ b/runtime/indent/vim.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2016 Jun 27
+" Last Change: 2019 Oct 31
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -56,6 +56,31 @@ function GetVimIndentIntern()
" and :else. Add it three times for a line that starts with '\' or '"\ '
" after a line that doesn't (or g:vim_indent_cont if it exists).
let ind = indent(lnum)
+
+ " In heredoc indenting works completely differently.
+ if has('syntax_items')
+ let syn_here = synIDattr(synID(v:lnum, 1, 1), "name")
+ if syn_here =~ 'vimLetHereDocStop'
+ " End of heredoc: use indent of matching start line
+ let lnum = v:lnum - 1
+ while lnum > 0
+ if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
+ return indent(lnum)
+ endif
+ let lnum -= 1
+ endwhile
+ return 0
+ endif
+ if syn_here =~ 'vimLetHereDoc'
+ if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
+ " First line in heredoc: increase indent
+ return ind + shiftwidth()
+ endif
+ " Heredoc continues: no change in indent
+ return ind
+ endif
+ endif
+
if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat
if exists("g:vim_indent_cont")
let ind = ind + g:vim_indent_cont
diff --git a/runtime/indent/xml.vim b/runtime/indent/xml.vim
index 883af98..ce992c5 100644
--- a/runtime/indent/xml.vim
+++ b/runtime/indent/xml.vim
@@ -1,8 +1,8 @@
-" Language: xml
-" Repository: https://github.com/chrisbra/vim-xml-ftplugin
-" Last Changed: July 27, 2019
-" Maintainer: Christian Brabandt <cb@256bit.org>
-" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Language: XML
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Repository: https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Changed: 2019 Oct 24
" Last Change:
" 20190726 - Correctly handle non-tagged data
" 20190204 - correctly handle wrap tags
diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim
index 3eb16f8..9621b2b 100644
--- a/runtime/indent/yaml.vim
+++ b/runtime/indent/yaml.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: YAML
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
-" Last Change: 2017 Jun 13
+" Last Change: 2019 Sep 28
" Only load this indent file when no other was loaded.
if exists('b:did_indent')
@@ -29,7 +29,7 @@ function s:FindPrevLessIndentedLine(lnum, ...)
let curindent = a:0 ? a:1 : indent(a:lnum)
while prevlnum
\&& indent(prevlnum) >= curindent
- \&& getline(prevlnum) =~# '^\s*#'
+ \&& getline(prevlnum) !~# '^\s*#'
let prevlnum = prevnonblank(prevlnum-1)
endwhile
return prevlnum
diff --git a/runtime/lang/menu_tr.latin1.vim b/runtime/lang/menu_tr.latin1.vim
new file mode 100644
index 0000000..fb75946
--- /dev/null
+++ b/runtime/lang/menu_tr.latin1.vim
@@ -0,0 +1,3 @@
+" Menu Translations: Turkish
+
+source <sfile>:p:h/menu_tr_tr.latin1.vim
diff --git a/runtime/lang/menu_tr.utf-8.vim b/runtime/lang/menu_tr.utf-8.vim
new file mode 100644
index 0000000..a07a64b
--- /dev/null
+++ b/runtime/lang/menu_tr.utf-8.vim
@@ -0,0 +1,3 @@
+" Menu Translations: Turkish
+
+source <sfile>:p:h/menu_tr_tr.utf-8.vim
diff --git a/runtime/lang/menu_tr_tr.latin1.vim b/runtime/lang/menu_tr_tr.latin1.vim
new file mode 100644
index 0000000..ba8d930
--- /dev/null
+++ b/runtime/lang/menu_tr_tr.latin1.vim
@@ -0,0 +1,332 @@
+" Menu Translations: Turkish
+" Maintainer: Emir SARI <bitigchi@me.com>
+
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+scriptencoding latin1
+
+" Top
+menutrans &File &Dosya
+menutrans &Edit D&zen
+menutrans &Tools &Aralar
+menutrans &Syntax &Szdizim
+menutrans &Buffers A&rabellekler
+menutrans &Window &Pencere
+menutrans &Help &Yardim
+
+
+" Help menu
+menutrans &Overview<Tab><F1> &Genel\ Bakis<Tab><F1>
+menutrans &User\ Manual &Kullanim\ Kilavuzu
+menutrans &How-To\ Links &Nasil\ Yapilir?
+menutrans &Find\.\.\. &Bul\.\.\.
+"--------------------
+menutrans &Credits &Tesekkrler
+menutrans Co&pying &Dagitim
+menutrans &Sponsor/Register &Sponsorluk/Kayit
+menutrans O&rphans &Yetimler
+"--------------------
+menutrans &Version Srm\ &Bilgisi
+menutrans &About &Hakkinda
+
+
+" File menu
+menutrans &Open\.\.\.<Tab>:e &A\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp &Yeni\ Blmde\ A\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew S&ekme\ A\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew Yeni\ &Sekme<Tab>:enew
+menutrans &Close<Tab>:close Ka&pat<Tab>:close
+"--------------------
+menutrans &Save<Tab>:w Ka&ydet<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav &Farkli Kaydet\.\.\.<Tab>:sav
+"--------------------
+menutrans Split\ &Diff\ With\.\.\. Ka&rsilastir\.\.\.
+menutrans Split\ Patched\ &By\.\.\. Ya&malar\ Dahil\ Karsilastir\.\.\.
+"--------------------
+menutrans &Print Ya&zdir
+menutrans Sa&ve-Exit<Tab>:wqa Kaydet\ &ve ik<Tab>:wqa
+menutrans E&xit<Tab>:qa i&k<Tab>:qa
+
+
+" Edit menu
+menutrans &Undo<Tab>u &Geri\ Al<Tab>u
+menutrans &Redo<Tab>^R &Yinele<Tab>^R
+menutrans Rep&eat<Tab>\. Son\ Komutu\ Y&inele<Tab>\.
+"--------------------
+menutrans Cu&t<Tab>"+x &Kes<Tab>"+x
+menutrans &Copy<Tab>"+y K&opyala<Tab>"+y
+menutrans &Paste<Tab>"+gP Ya&pistir<Tab>"+gP
+menutrans Put\ &Before<Tab>[p &nne Koy<Tab>[p
+menutrans Put\ &After<Tab>]p A&rkasina Koy<Tab>]p
+menutrans &Delete<Tab>x Si&l<Tab>x
+menutrans &Select\ All<Tab>ggVG T&mn\ Se<Tab>ggVG
+"--------------------
+" Athena GUI only
+menutrans &Find<Tab>/ &Bul<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s Bul\ &ve\ Degistir<Tab>:%s
+" End Athena GUI only
+menutrans &Find\.\.\.<Tab>/ &Bul\.\.\.<Tab>/
+menutrans Find\ and\ Rep&lace\.\.\. Bul\ ve\ &Degistir\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s Bul\ ve\ &Degistir\.\.\.<Tab>:%s
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s Bul\ ve\ &Degistir\.\.\.<Tab>:s
+"--------------------
+menutrans Settings\ &Window &Ayarlar\ Penceresi
+menutrans Startup\ &Settings Baslan&gi\ Ayarlari
+menutrans &Global\ Settings Ge&nel\ Ayarlar
+menutrans F&ile\ Settings &Dosya\ Ayarlari
+menutrans C&olor\ Scheme &Renk\ Dzeni
+menutrans &Keymap Dgme\ &Eslem
+menutrans Select\ Fo&nt\.\.\. Ya&zitipi Se\.\.\.
+">>>----------------- Edit/Global settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Dizgi\ &Vurgulamasini\ A/Kapat<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic! BYK/kk\ Harf\ &Duyarsiz\ A/Kapat<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! Es&lesen\ Ikilileri\ A/Kapat<Tab>:set\ sm!
+menutrans &Context\ Lines I&mlele\ Oynayan\ Satirlar
+menutrans &Virtual\ Edit &Sanal\ Dzenleme
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Ekleme\ &Kipini\ A/Kapat<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! &Vi\ Uyumlu\ Kipi\ A/Kapat<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. &Arama\ Yolu\.\.\.
+menutrans Ta&g\ Files\.\.\. &Etiket\ Dosyalari\.\.\.
+"
+menutrans Toggle\ &Toolbar &Ara\ ubugunu\ A/Kapat
+menutrans Toggle\ &Bottom\ Scrollbar A&lt\ Kaydirma\ ubugunu\ A/Kapat
+menutrans Toggle\ &Left\ Scrollbar &Sol\ Kaydirma\ ubugunu\ A/Kapat
+menutrans Toggle\ &Right\ Scrollbar S&ag\ Kaydirma\ ubugunu\ A/Kapat
+">>>->>>------------- Edit/Global settings/Virtual edit
+menutrans Never Kapali
+menutrans Block\ Selection Blok\ Seimi
+menutrans Insert\ Mode Ekleme\ Kipi
+menutrans Block\ and\ Insert Blok\ Seiminde\ ve\ Ekleme\ Kipinde
+menutrans Always Her\ Zaman\ Aik
+">>>----------------- Edit/File settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! &Satir\ Numaralandirmayi\ A/Kapat<Tab>:set\ nu!
+menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! &Greceli\ Satir\ Numaralandirmayi\ A/Kapat<Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! G&rnmeyen\ Karakterleri\ A/Kapat<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap! Sa&tir\ Kaydirmayi\ A/Kapat<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! S&zck\ Kaydirmayi\ A/Kapat<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding-tab<Tab>:set\ et! S&ekmeleri\ Bosluklara\ Dnstrmeyi\ A/Kapat<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai! &Otomatik\ Girintilemeyi\ A/Kapat<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin! &C\ Tarzi\ Girintilemeyi\ A/Kapat<Tab>:set\ cin!
+">>>---
+menutrans &Shiftwidth &Girinti\ Dzeyi
+menutrans Soft\ &Tabstop &Sekme\ Genisligi
+menutrans Te&xt\ Width\.\.\. &Metin\ Genisligi\.\.\.
+menutrans &File\ Format\.\.\. &Dosya\ Biimi\.\.\.
+"
+"
+"
+" Tools menu
+menutrans &Jump\ to\ This\ Tag<Tab>g^] S&u\ Etikete\ Atla<Tab>g^]
+menutrans Jump\ &Back<Tab>^T &Geri\ Dn<Tab>^T
+menutrans Build\ &Tags\ File &Etiket\ Dosyasi\ Olustur
+"-------------------
+menutrans &Folding &Kivirmalar
+menutrans &Spelling &Yazim\ Denetimi
+menutrans &Diff &Ayrimlar\ (diff)
+"-------------------
+menutrans &Make<Tab>:make &Derle<Tab>:make
+menutrans &List\ Errors<Tab>:cl &Hatalari\ Listele<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! I&letileri\ Listele<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn Bir\ &Sonraki\ Hata<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp Bir\ &nceki\ Hata<Tab>:cp
+menutrans &Older\ List<Tab>:cold Daha\ &Eski\ Hatalar<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew Daha\ &Yeni\ Hatalar<Tab>:cnew
+menutrans Error\ &Window Hatalar\ &Penceresi
+menutrans Se&t\ Compiler De&rleyici\ Se
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu Derleyici\ Ayarlarini\ Mende\ &Gster
+"-------------------
+menutrans &Convert\ to\ HEX<Tab>:%!xxd HEX'e\ D&nstr<Tab>:%!xxd
+menutrans Conve&rt\ Back<Tab>:%!xxd\ -r HEX'&ten\ Dnstr<Tab>:%!xxd\ -r
+">>>---------------- Tools/Spelling
+menutrans &Spell\ Check\ On Yazim\ Denetimini\ &A
+menutrans Spell\ Check\ &Off Yazim\ Denetimini\ &Kapat
+menutrans To\ &Next\ Error<Tab>]s Bir\ &Sonraki\ Hata<Tab>]s
+menutrans To\ &Previous\ Error<Tab>[s Bir\ &nceki\ Hata<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z= D&zeltme\ ner<Tab>z=
+menutrans &Repeat\ Correction<Tab>:spellrepall Dzeltmeyi\ &Yinele<Tab>spellrepall
+"-------------------
+menutrans Set\ Language\ to\ "en" Dili\ "en"\ yap
+menutrans Set\ Language\ to\ "en_au" Dili\ "en_au"\ yap
+menutrans Set\ Language\ to\ "en_ca" Dili\ "en_ca"\ yap
+menutrans Set\ Language\ to\ "en_gb" Dili\ "en_gb"\ yap
+menutrans Set\ Language\ to\ "en_nz" Dili\ "en_nz"\ yap
+menutrans Set\ Language\ to\ "en_us" Dili\ "en_us"\ yap
+menutrans &Find\ More\ Languages &Baska\ Diller\ Bul
+let g:menutrans_set_lang_to = 'Dil Ykle'
+"
+"
+" The Spelling popup menu
+"
+"
+let g:menutrans_spell_change_ARG_to = 'Dzeltilecek:\ "%s"\ ->'
+let g:menutrans_spell_add_ARG_to_word_list = '"%s"\ szcgn\ szlge\ ekle'
+let g:menutrans_spell_ignore_ARG = '"%s"\ szcgn\ yoksay'
+">>>---------------- Folds
+menutrans &Enable/Disable\ Folds<Tab>zi &Kivirmalari\ A/Kapat<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv I&mlecin\ Oldugu\ Satiri\ Grntle<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx Ya&lnizca\ Imlecin\ Oldugu\ Satiri\ Grntle<Tab>zMzx
+menutrans C&lose\ More\ Folds<Tab>zm &Daha\ Fazla\ Kivirma\ Kapat<Tab>zm
+menutrans &Close\ All\ Folds<Tab>zM Btn\ Ki&virmalari\ Kapat<Tab>zM
+menutrans &Open\ All\ Folds<Tab>zR B&tn\ Kivirmalari\ A<Tab>zR
+menutrans O&pen\ More\ Folds<Tab>zr D&aha\ Fazla\ Kivirma\ A<Tab>zr
+menutrans Fold\ Met&hod Kivi&rma\ Yntemi
+menutrans Create\ &Fold<Tab>zf Kivirma\ &Olustur<Tab>zf
+menutrans &Delete\ Fold<Tab>zd Kivirma\ &Sil<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD T&m\ Kivirmalari\ Sil<Tab>zD
+menutrans Fold\ col&umn\ Width Kivirma\ Stunu\ &Genisligi
+">>>->>>----------- Tools/Folds/Fold Method
+menutrans M&anual &El\ Ile
+menutrans I&ndent &Girinti
+menutrans E&xpression I&fade
+menutrans S&yntax &Szdizim
+menutrans Ma&rker I&mleyici
+">>>--------------- Tools/Diff
+menutrans &Update &Gncelle
+menutrans &Get\ Block Blogu\ &Al
+menutrans &Put\ Block Blogu\ &Koy
+">>>--------------- Tools/Diff/Error window
+menutrans &Update<Tab>:cwin &Gncelle<Tab>:cwin
+menutrans &Close<Tab>:cclose &Kapat<Tab>:cclose
+menutrans &Open<Tab>:copen &A<Tab>:copen
+"
+"
+" Syntax menu
+"
+menutrans &Show\ File\ Types\ in\ Menu Dosya\ Trlerini\ Mende\ &Gster
+menutrans Set\ '&syntax'\ only Yalnizca\ 'syntax'\ &Ayarla
+menutrans Set\ '&filetype'\ too 'filetype'\ Iin\ &de\ Ayarla
+menutrans &Off &Kapat
+menutrans &Manual &El\ Ile
+menutrans A&utomatic &Otomatik
+menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ Iin\ A/Kapat
+menutrans Co&lor\ Test &Renk\ Testi
+menutrans &Highlight\ Test &Vurgulama\ Testi
+menutrans &Convert\ to\ HTML &HTML'ye\ Dnstr
+"
+"
+" Buffers menu
+"
+menutrans &Refresh\ menu &Meny\ Gncelle
+menutrans Delete &Sil
+menutrans &Alternate &teki
+menutrans &Next So&nraki
+menutrans &Previous n&ceki
+menutrans [No\ File] [Dosya\ Yok]
+"
+"
+" Window menu
+"
+menutrans &New<Tab>^Wn Yeni\ &Pencere<Tab>^Wn
+menutrans S&plit<Tab>^Ws Pencereyi\ &Bl<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ Pencereyi\ Baskasina\ B&l<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv Pencereyi\ &Dikey\ Olarak\ Bl<Tab>^Wv
+menutrans Split\ File\ E&xplorer Yeni\ Bl&mde\ Dosya\ Gezginini\ A
+"
+menutrans &Close<Tab>^Wc Pen&cereyi\ Kapat<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo Diger\ Pencerele&ri\ Kapat<Tab>^Wo
+"
+menutrans Move\ &To &Tasi
+menutrans Rotate\ &Up<Tab>^WR &Yukari\ Tasi<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr &Asagi\ Tasi<Tab>^Wr
+"
+menutrans &Equal\ Size<Tab>^W= &Esit\ Boyut<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ E&n\ Byk\ Ykseklik<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ En\ Kk\ Yksekl&ik<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| En\ Byk\ Gen&islik<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| En\ Kk\ Genis&lik<Tab>^W1\|
+">>>----------------- Window/Move To
+menutrans &Top<Tab>^WK &Yukari<Tab>^WK
+menutrans &Bottom<Tab>^WJ &Asagi<Tab>^WJ
+menutrans &Left\ Side<Tab>^WH So&la<Tab>^WH
+menutrans &Right\ Side<Tab>^WL &Saga<Tab>^WL
+"
+"
+" The popup menu
+"
+"
+menutrans &Undo &Geri\ Al
+menutrans Cu&t &Kes
+menutrans &Copy K&opyala
+menutrans &Paste &Yapistir
+menutrans &Delete &Sil
+menutrans Select\ Blockwise &Blok\ Biiminde\ Se
+menutrans Select\ &Word S&zck\ Se
+menutrans Select\ &Sentence &Tmce\ Se
+menutrans Select\ Pa&ragraph &Paragraf\ Se
+menutrans Select\ &Line S&atir\ Se
+menutrans Select\ &Block Bl&ok\ Se
+menutrans Select\ &All Tm&n\ Se
+"
+" The GUI toolbar
+"
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open Dosya A
+ tmenu ToolBar.Save Dosya Kaydet
+ tmenu ToolBar.SaveAll Tm Dosyalari Kaydet
+ tmenu ToolBar.Print Yazdir
+ tmenu ToolBar.Undo Geri Al
+ tmenu ToolBar.Redo Yinele
+ tmenu ToolBar.Cut Kes
+ tmenu ToolBar.Copy Kopyala
+ tmenu ToolBar.Paste Yapistir
+ tmenu ToolBar.Find Bul...
+ tmenu ToolBar.FindNext Sonrakini Bul
+ tmenu ToolBar.FindPrev ncekini Bul
+ tmenu ToolBar.Replace Bul ve Degistir...
+ if 0 " disabled; These are in the Windows menu
+ tmenu ToolBar.New Yeni Pencere
+ tmenu ToolBar.WinSplit Pencereyi Bl
+ tmenu ToolBar.WinMax En Byk Pencere Yksekligi
+ tmenu ToolBar.WinMin En Kk Pencere Yksekligi
+ tmenu ToolBar.WinClose Pencereyi Kapat
+ endif
+ tmenu ToolBar.LoadSesn Oturum Ykle
+ tmenu ToolBar.SaveSesn Oturum Kaydet
+ tmenu ToolBar.RunScript Betik alistir
+ tmenu ToolBar.Make Derle
+ tmenu ToolBar.Shell Kabuk
+ tmenu ToolBar.RunCtags Etiket Dosyasi Olustur
+ tmenu ToolBar.TagJump Etikete Atla
+ tmenu ToolBar.Help Yardim
+ tmenu ToolBar.FindHelp Yardim Bul
+ endfun
+endif
+"
+"
+" Dialog texts
+"
+" Find in help dialog
+"
+let g:menutrans_help_dialog = "Yardim icin komut veya sozcuk girin:\n\nEkleme Kipi komutlarini aramak icin i_ ekleyin (ornegin i_CTRL-X)\nNormal Kip komutlarini aramak icin _c ekleyin (ornegin c_<Del>)\nSecenekler hakkinda yardim almak icin ' ekleyin (ornegin 'shiftwidth')"
+"
+"
+" Searh path dialog
+"
+let g:menutrans_path_dialog = "Dosya aramasi iin yol belirtin.\nDizin adlari virgllerle ayrilir."
+"
+" Tag files dialog
+"
+let g:menutrans_tags_dialog = "Etiket dosyasi adlari belirtin (virglle ayirarak).\n"
+"
+" Text width dialog
+"
+let g:menutrans_textwidth_dialog = "Biimlendirme iin metin genisligini belirtin.\nBiimlendirme iptali iin 0 girin."
+"
+" File format dialog
+"
+let g:menutrans_fileformat_dialog = "Dosya biimi sein"
+let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nI&ptal"
+"
+let menutrans_no_file = "[Dosya Yok]"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/lang/menu_tr_tr.utf-8.vim b/runtime/lang/menu_tr_tr.utf-8.vim
new file mode 100644
index 0000000..fe8b7b5
--- /dev/null
+++ b/runtime/lang/menu_tr_tr.utf-8.vim
@@ -0,0 +1,331 @@
+" Menu Translations: Turkish
+" Maintainer: Emir SARI <bitigchi@me.com>
+
+if exists("did_menu_trans")
+ finish
+endif
+let did_menu_trans = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+scriptencoding utf-8
+
+" Top
+menutrans &File &Dosya
+menutrans &Edit Dü&zen
+menutrans &Tools &Araçlar
+menutrans &Syntax &Sözdizim
+menutrans &Buffers A&rabellekler
+menutrans &Window &Pencere
+menutrans &Help &Yardım
+
+
+" Help menu
+menutrans &Overview<Tab><F1> &Genel\ Bakış<Tab><F1>
+menutrans &User\ Manual &Kullanım\ Kılavuzu
+menutrans &How-To\ Links &Nasıl\ Yapılır?
+menutrans &Find\.\.\. &Bul\.\.\.
+"--------------------
+menutrans &Credits &Teşekkürler
+menutrans Co&pying &Dağıtım
+menutrans &Sponsor/Register &Sponsorluk/Kayıt
+menutrans O&rphans &Yetimler
+"--------------------
+menutrans &Version Sürüm\ &Bilgisi
+menutrans &About &Hakkında
+
+
+" File menu
+menutrans &Open\.\.\.<Tab>:e &Aç\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp &Yeni\ Bölümde\ Aç\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew S&ekme\ Aç\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew Yeni\ &Sekme<Tab>:enew
+menutrans &Close<Tab>:close Ka&pat<Tab>:close
+"--------------------
+menutrans &Save<Tab>:w Ka&ydet<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav &Farklı Kaydet\.\.\.<Tab>:sav
+"--------------------
+menutrans Split\ &Diff\ With\.\.\. Ka&rşılaştır\.\.\.
+menutrans Split\ Patched\ &By\.\.\. Ya&malar\ Dahil\ Karşılaştır\.\.\.
+"--------------------
+menutrans &Print Ya&zdır
+menutrans Sa&ve-Exit<Tab>:wqa Kaydet\ &ve Çık<Tab>:wqa
+menutrans E&xit<Tab>:qa Çı&k<Tab>:qa
+
+
+" Edit menu
+menutrans &Undo<Tab>u &Geri\ Al<Tab>u
+menutrans &Redo<Tab>^R &Yinele<Tab>^R
+menutrans Rep&eat<Tab>\. Son\ Komutu\ Y&inele<Tab>\.
+"--------------------
+menutrans Cu&t<Tab>"+x &Kes<Tab>"+x
+menutrans &Copy<Tab>"+y K&opyala<Tab>"+y
+menutrans &Paste<Tab>"+gP Ya&pıştır<Tab>"+gP
+menutrans Put\ &Before<Tab>[p Ö&nüne Koy<Tab>[p
+menutrans Put\ &After<Tab>]p A&rkasına Koy<Tab>]p
+menutrans &Delete<Tab>x Si&l<Tab>x
+menutrans &Select\ All<Tab>ggVG Tü&münü\ Seç<Tab>ggVG
+"--------------------
+" Athena GUI only
+menutrans &Find<Tab>/ &Bul<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s Bul\ &ve\ Değiştir<Tab>:%s
+" End Athena GUI only
+menutrans &Find\.\.\.<Tab>/ &Bul\.\.\.<Tab>/
+menutrans Find\ and\ Rep&lace\.\.\. Bul\ ve\ &Değiştir\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s Bul\ ve\ &Değiştir\.\.\.<Tab>:%s
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s Bul\ ve\ &Değiştir\.\.\.<Tab>:s
+"--------------------
+menutrans Settings\ &Window &Ayarlar\ Penceresi
+menutrans Startup\ &Settings Başlan&gıç\ Ayarları
+menutrans &Global\ Settings Ge&nel\ Ayarlar
+menutrans F&ile\ Settings &Dosya\ Ayarları
+menutrans C&olor\ Scheme &Renk\ Düzeni
+menutrans &Keymap Düğme\ &Eşlem
+menutrans Select\ Fo&nt\.\.\. Ya&zıtipi Seç\.\.\.
+">>>----------------- Edit/Global settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Dizgi\ &Vurgulamasını\ Aç/Kapat<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic! BÜYÜK/küçük\ Harf\ &Duyarsız\ Aç/Kapat<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! Eş&leşen\ İkilileri\ Aç/Kapat<Tab>:set\ sm!
+menutrans &Context\ Lines İ&mleçle\ Oynayan\ Satırlar
+menutrans &Virtual\ Edit &Sanal\ Düzenleme
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Ekleme\ &Kipini\ Aç/Kapat<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! &Vi\ Uyumlu\ Kipi\ Aç/Kapat<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. &Arama\ Yolu\.\.\.
+menutrans Ta&g\ Files\.\.\. &Etiket\ Dosyaları\.\.\.
+"
+menutrans Toggle\ &Toolbar &Araç\ Çubuğunu\ Aç/Kapat
+menutrans Toggle\ &Bottom\ Scrollbar A&lt\ Kaydırma\ Çubuğunu\ Aç/Kapat
+menutrans Toggle\ &Left\ Scrollbar &Sol\ Kaydırma\ Çubuğunu\ Aç/Kapat
+menutrans Toggle\ &Right\ Scrollbar S&ağ\ Kaydırma\ Çubuğunu\ Aç/Kapat
+">>>->>>------------- Edit/Global settings/Virtual edit
+menutrans Never Kapalı
+menutrans Block\ Selection Blok\ Seçimi
+menutrans Insert\ Mode Ekleme\ Kipi
+menutrans Block\ and\ Insert Blok\ Seçiminde\ ve\ Ekleme\ Kipinde
+menutrans Always Her\ Zaman\ Açık
+">>>----------------- Edit/File settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! &Satır\ Numaralandırmayı\ Aç/Kapat<Tab>:set\ nu!
+menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! &Göreceli\ Satır\ Numaralandırmayı\ Aç/Kapat<Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! Gö&rünmeyen\ Karakterleri\ Aç/Kapat<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap! Sa&tır\ Kaydırmayı\ Aç/Kapat<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! Sö&zcük\ Kaydırmayı\ Aç/Kapat<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding-tab<Tab>:set\ et! S&ekmeleri\ Boşluklara\ Dönüştürmeyi\ Aç/Kapat<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai! &Otomatik\ Girintilemeyi\ Aç/Kapat<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin! &C\ Tarzı\ Girintilemeyi\ Aç/Kapat<Tab>:set\ cin!
+">>>---
+menutrans &Shiftwidth &Girinti\ Düzeyi
+menutrans Soft\ &Tabstop &Sekme\ Genişliği
+menutrans Te&xt\ Width\.\.\. &Metin\ Genişliği\.\.\.
+menutrans &File\ Format\.\.\. &Dosya\ Biçimi\.\.\.
+"
+"
+"
+" Tools menu
+menutrans &Jump\ to\ This\ Tag<Tab>g^] Ş&u\ Etikete\ Atla<Tab>g^]
+menutrans Jump\ &Back<Tab>^T &Geri\ Dön<Tab>^T
+menutrans Build\ &Tags\ File &Etiket\ Dosyası\ Oluştur
+"-------------------
+menutrans &Folding &Kıvırmalar
+menutrans &Spelling &Yazım\ Denetimi
+menutrans &Diff &Ayrımlar\ (diff)
+"-------------------
+menutrans &Make<Tab>:make &Derle<Tab>:make
+menutrans &List\ Errors<Tab>:cl &Hataları\ Listele<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! İ&letileri\ Listele<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn Bir\ &Sonraki\ Hata<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp Bir\ Ö&nceki\ Hata<Tab>:cp
+menutrans &Older\ List<Tab>:cold Daha\ &Eski\ Hatalar<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew Daha\ &Yeni\ Hatalar<Tab>:cnew
+menutrans Error\ &Window Hatalar\ &Penceresi
+menutrans Se&t\ Compiler De&rleyici\ Seç
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu Derleyici\ Ayarlarını\ Menüde\ &Göster
+"-------------------
+menutrans &Convert\ to\ HEX<Tab>:%!xxd HEX'e\ Dö&nüştür<Tab>:%!xxd
+menutrans Conve&rt\ Back<Tab>:%!xxd\ -r HEX'&ten\ Dönüştür<Tab>:%!xxd\ -r
+">>>---------------- Tools/Spelling
+menutrans &Spell\ Check\ On Yazım\ Denetimini\ &Aç
+menutrans Spell\ Check\ &Off Yazım\ Denetimini\ &Kapat
+menutrans To\ &Next\ Error<Tab>]s Bir\ &Sonraki\ Hata<Tab>]s
+menutrans To\ &Previous\ Error<Tab>[s Bir\ Ö&nceki\ Hata<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z= Dü&zeltme\ Öner<Tab>z=
+menutrans &Repeat\ Correction<Tab>:spellrepall Düzeltmeyi\ &Yinele<Tab>spellrepall
+"-------------------
+menutrans Set\ Language\ to\ "en" Dili\ "en"\ yap
+menutrans Set\ Language\ to\ "en_au" Dili\ "en_au"\ yap
+menutrans Set\ Language\ to\ "en_ca" Dili\ "en_ca"\ yap
+menutrans Set\ Language\ to\ "en_gb" Dili\ "en_gb"\ yap
+menutrans Set\ Language\ to\ "en_nz" Dili\ "en_nz"\ yap
+menutrans Set\ Language\ to\ "en_us" Dili\ "en_us"\ yap
+menutrans &Find\ More\ Languages &Başka\ Diller\ Bul
+let g:menutrans_set_lang_to = 'Dil Yükle'
+"
+"
+" The Spelling popup menu
+"
+"
+let g:menutrans_spell_change_ARG_to = 'Düzeltilecek:\ "%s"\ ->'
+let g:menutrans_spell_add_ARG_to_word_list = '"%s"\ sözcüğünü\ sözlüğe\ ekle'
+let g:menutrans_spell_ignore_ARG = '"%s"\ sözcüğünü\ yoksay'
+">>>---------------- Folds
+menutrans &Enable/Disable\ Folds<Tab>zi &Kıvırmaları\ Aç/Kapat<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv İ&mlecin\ Olduğu\ Satırı\ Görüntüle<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx Ya&lnızca\ İmlecin\ Olduğu\ Satırı\ Görüntüle<Tab>zMzx
+menutrans C&lose\ More\ Folds<Tab>zm &Daha\ Fazla\ Kıvırma\ Kapat<Tab>zm
+menutrans &Close\ All\ Folds<Tab>zM Bütün\ Kı&vırmaları\ Kapat<Tab>zM
+menutrans &Open\ All\ Folds<Tab>zR Bü&tün\ Kıvırmaları\ Aç<Tab>zR
+menutrans O&pen\ More\ Folds<Tab>zr D&aha\ Fazla\ Kıvırma\ Aç<Tab>zr
+menutrans Fold\ Met&hod Kıvı&rma\ Yöntemi
+menutrans Create\ &Fold<Tab>zf Kıvırma\ &Oluştur<Tab>zf
+menutrans &Delete\ Fold<Tab>zd Kıvırma\ &Sil<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD Tü&m\ Kıvırmaları\ Sil<Tab>zD
+menutrans Fold\ col&umn\ Width Kıvırma\ Sütunu\ &Genişliği
+">>>->>>----------- Tools/Folds/Fold Method
+menutrans M&anual &El\ İle
+menutrans I&ndent &Girinti
+menutrans E&xpression İ&fade
+menutrans S&yntax &Sözdizim
+menutrans Ma&rker İ&mleyici
+">>>--------------- Tools/Diff
+menutrans &Update &Güncelle
+menutrans &Get\ Block Bloğu\ &Al
+menutrans &Put\ Block Bloğu\ &Koy
+">>>--------------- Tools/Diff/Error window
+menutrans &Update<Tab>:cwin &Güncelle<Tab>:cwin
+menutrans &Close<Tab>:cclose &Kapat<Tab>:cclose
+menutrans &Open<Tab>:copen &Aç<Tab>:copen
+"
+"
+" Syntax menu
+"
+menutrans &Show\ File\ Types\ in\ Menu Dosya\ Türlerini\ Menüde\ &Göster
+menutrans Set\ '&syntax'\ only Yalnızca\ 'syntax'\ &Ayarla
+menutrans Set\ '&filetype'\ too 'filetype'\ İçin\ &de\ Ayarla
+menutrans &Off &Kapat
+menutrans &Manual &El\ İle
+menutrans A&utomatic &Otomatik
+menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ İçin\ Aç/Kapat
+menutrans Co&lor\ Test &Renk\ Testi
+menutrans &Highlight\ Test &Vurgulama\ Testi
+menutrans &Convert\ to\ HTML &HTML'ye\ Dönüştür
+"
+"
+" Buffers menu
+"
+menutrans &Refresh\ menu &Menüyü\ Güncelle
+menutrans Delete &Sil
+menutrans &Alternate Ö&teki
+menutrans &Next So&nraki
+menutrans &Previous Ön&ceki
+menutrans [No\ File] [Dosya\ Yok]
+"
+"
+" Window menu
+"
+menutrans &New<Tab>^Wn Yeni\ &Pencere<Tab>^Wn
+menutrans S&plit<Tab>^Ws Pencereyi\ &Böl<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ Pencereyi\ Başkasına\ Bö&l<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv Pencereyi\ &Dikey\ Olarak\ Böl<Tab>^Wv
+menutrans Split\ File\ E&xplorer Yeni\ Bölü&mde\ Dosya\ Gezginini\ Aç
+"
+menutrans &Close<Tab>^Wc Pen&cereyi\ Kapat<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo Diğer\ Pencerele&ri\ Kapat<Tab>^Wo
+"
+menutrans Move\ &To &Taşı
+menutrans Rotate\ &Up<Tab>^WR &Yukarı\ Taşı<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr &Aşağı\ Taşı<Tab>^Wr
+"
+menutrans &Equal\ Size<Tab>^W= &Eşit\ Boyut<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ E&n\ Büyük\ Yükseklik<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_ En\ Küçük\ Yüksekl&ik<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| En\ Büyük\ Gen&işlik<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| En\ Küçük\ Geniş&lik<Tab>^W1\|
+">>>----------------- Window/Move To
+menutrans &Top<Tab>^WK &Yukarı<Tab>^WK
+menutrans &Bottom<Tab>^WJ &Aşağı<Tab>^WJ
+menutrans &Left\ Side<Tab>^WH So&la<Tab>^WH
+menutrans &Right\ Side<Tab>^WL &Sağa<Tab>^WL
+"
+"
+" The popup menu
+"
+"
+menutrans &Undo &Geri\ Al
+menutrans Cu&t &Kes
+menutrans &Copy K&opyala
+menutrans &Paste &Yapıştır
+menutrans &Delete &Sil
+menutrans Select\ Blockwise &Blok\ Biçiminde\ Seç
+menutrans Select\ &Word Sö&zcük\ Seç
+menutrans Select\ &Sentence &Tümce\ Seç
+menutrans Select\ Pa&ragraph &Paragraf\ Seç
+menutrans Select\ &Line S&atır\ Seç
+menutrans Select\ &Block Bl&ok\ Seç
+menutrans Select\ &All Tümü&nü\ Seç
+"
+" The GUI toolbar
+"
+if has("toolbar")
+ if exists("*Do_toolbar_tmenu")
+ delfun Do_toolbar_tmenu
+ endif
+ fun Do_toolbar_tmenu()
+ tmenu ToolBar.Open Dosya Aç
+ tmenu ToolBar.Save Dosya Kaydet
+ tmenu ToolBar.SaveAll Tüm Dosyaları Kaydet
+ tmenu ToolBar.Print Yazdır
+ tmenu ToolBar.Undo Geri Al
+ tmenu ToolBar.Redo Yinele
+ tmenu ToolBar.Cut Kes
+ tmenu ToolBar.Copy Kopyala
+ tmenu ToolBar.Paste Yapıştır
+ tmenu ToolBar.Find Bul...
+ tmenu ToolBar.FindNext Sonrakini Bul
+ tmenu ToolBar.FindPrev Öncekini Bul
+ tmenu ToolBar.Replace Bul ve Değiştir...
+ if 0 " disabled; These are in the Windows menu
+ tmenu ToolBar.New Yeni Pencere
+ tmenu ToolBar.WinSplit Pencereyi Böl
+ tmenu ToolBar.WinMax En Büyük Pencere Yüksekliği
+ tmenu ToolBar.WinMin En Küçük Pencere Yüksekliği
+ tmenu ToolBar.WinClose Pencereyi Kapat
+ endif
+ tmenu ToolBar.LoadSesn Oturum Yükle
+ tmenu ToolBar.SaveSesn Oturum Kaydet
+ tmenu ToolBar.RunScript Betik Çalıştır
+ tmenu ToolBar.Make Derle
+ tmenu ToolBar.Shell Kabuk
+ tmenu ToolBar.RunCtags Etiket Dosyası Oluştur
+ tmenu ToolBar.TagJump Etikete Atla
+ tmenu ToolBar.Help Yardım
+ tmenu ToolBar.FindHelp Yardım Bul
+ endfun
+endif
+"
+"
+" Dialog texts
+"
+" Find in help dialog
+"
+let g:menutrans_help_dialog = "Yardım için komut veya sözcük girin:\n\nEkleme Kipi komutlarını aramak için i_ ekleyin (örneğin i_CTRL-X)\nNormal Kip komutlarını aramak için _c ekleyin (örneğin с_<Del>)\nSeçenekler hakkında yardım almak için ' ekleyin (örneğin 'shiftwidth')"
+"
+" Searh path dialog
+"
+let g:menutrans_path_dialog = "Dosya araması için yol belirtin.\nDizin adları virgüllerle ayrılır."
+"
+" Tag files dialog
+"
+let g:menutrans_tags_dialog = "Etiket dosyası adları belirtin (virgülle ayırarak).\n"
+"
+" Text width dialog
+"
+let g:menutrans_textwidth_dialog = "Biçimlendirme için metin genişliğini belirtin.\nBiçimlendirme iptali için 0 girin."
+"
+" File format dialog
+"
+let g:menutrans_fileformat_dialog = "Dosya biçimi seçin"
+let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nİ&ptal"
+"
+let menutrans_no_file = "[Dosya Yok]"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/pack/dist/opt/matchit/autoload/matchit.vim b/runtime/pack/dist/opt/matchit/autoload/matchit.vim
index abf06d3..f56e9e2 100644
--- a/runtime/pack/dist/opt/matchit/autoload/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/autoload/matchit.vim
@@ -1,6 +1,6 @@
" matchit.vim: (global plugin) Extended "%" matching
" autload script of matchit plugin, see ../plugin/matchit.vim
-" Last Change: 2019 Jan 28
+" Last Change: 2019 Oct 24
let s:last_mps = ""
let s:last_words = ":"
@@ -211,6 +211,14 @@ function matchit#Match_wrapper(word, forward, mode) range
execute "if " . skip . "| let skip = '0' | endif"
endif
let sp_return = searchpair(ini, mid, fin, flag, skip)
+ if &selection isnot# 'inclusive' && a:mode == 'v'
+ " move cursor one pos to the right, because selection is not inclusive
+ " add virtualedit=onemore, to make it work even when the match ends the " line
+ if !(col('.') < col('$')-1)
+ set ve=onemore
+ endif
+ norm! l
+ endif
let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
" Restore cursor position and original screen.
call winrestview(view)
diff --git a/runtime/pack/dist/opt/matchit/doc/matchit.txt b/runtime/pack/dist/opt/matchit/doc/matchit.txt
index 81d0e8c..689278a 100644
--- a/runtime/pack/dist/opt/matchit/doc/matchit.txt
+++ b/runtime/pack/dist/opt/matchit/doc/matchit.txt
@@ -4,7 +4,7 @@ For instructions on installing this file, type
`:help matchit-install`
inside Vim.
-For Vim version 8.1. Last change: 2019 May 05
+For Vim version 8.1. Last change: 2019 Oct 24
VIM REFERENCE MANUAL by Benji Fisher et al
@@ -375,6 +375,10 @@ The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in
==============================================================================
5. Known Bugs and Limitations *matchit-bugs*
+Repository: https://github.com/chrisbra/matchit/
+Bugs can be reported at the repository (alternatively you can send me a mail).
+The latest development snapshot can also be downloaded there.
+
Just because I know about a bug does not mean that it is on my todo list. I
try to respond to reports of bugs that cause real problems. If it does not
cause serious problems, or if there is a work-around, a bug may sit there for
@@ -386,4 +390,4 @@ try to implement this in a future version. (This is not so easy to arrange as
you might think!)
==============================================================================
-vim:tw=78:fo=tcq2:ft=help:
+vim:tw=78:ts=8:fo=tcq2:ft=help:
diff --git a/runtime/pack/dist/opt/matchit/plugin/matchit.vim b/runtime/pack/dist/opt/matchit/plugin/matchit.vim
index 84147f1..4d0f4e0 100644
--- a/runtime/pack/dist/opt/matchit/plugin/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/plugin/matchit.vim
@@ -1,13 +1,13 @@
" matchit.vim: (global plugin) Extended "%" matching
" Maintainer: Christian Brabandt
-" Version: 1.15
-" Last Change: 2019 Jan 28
+" Version: 1.16
+" Last Change: 2019 Oct 24
" Repository: https://github.com/chrisbra/matchit
" Previous URL:http://www.vim.org/script.php?script_id=39
" Previous Maintainer: Benji Fisher PhD <benji@member.AMS.org>
" Documentation:
-" The documentation is in a separate file: ../doc/matchit.txt .
+" The documentation is in a separate file: ../doc/matchit.txt
" Credits:
" Vim editor by Bram Moolenaar (Thanks, Bram!)
@@ -48,8 +48,8 @@ set cpo&vim
nnoremap <silent> <Plug>(MatchitNormalForward) :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
nnoremap <silent> <Plug>(MatchitNormalBackward) :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
-vnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
-vnoremap <silent> <Plug>(MatchitVisualBackward) :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualBackward) :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
onoremap <silent> <Plug>(MatchitOperationForward) :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
onoremap <silent> <Plug>(MatchitOperationBackward) :<C-U>call matchit#Match_wrapper('',0,'o')<CR>
@@ -63,8 +63,8 @@ omap <silent> g% <Plug>(MatchitOperationBackward)
" Analogues of [{ and ]} using matching patterns:
nnoremap <silent> <Plug>(MatchitNormalMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>
nnoremap <silent> <Plug>(MatchitNormalMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>
-vnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
-vnoremap <silent> <Plug>(MatchitVisualMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
+xnoremap <silent> <Plug>(MatchitVisualMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv``
onoremap <silent> <Plug>(MatchitOperationMultiBackward) :<C-U>call matchit#MultiMatch("bW", "o")<CR>
onoremap <silent> <Plug>(MatchitOperationMultiForward) :<C-U>call matchit#MultiMatch("W", "o")<CR>
@@ -76,7 +76,7 @@ omap <silent> [% <Plug>(MatchitOperationMultiBackward)
omap <silent> ]% <Plug>(MatchitOperationMultiForward)
" text object:
-vmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
+xmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
xmap a% <Plug>(MatchitVisualTextObject)
" Call this function to turn on debugging information. Every time the main
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index 65b9fe5..59d33f4 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -1,6 +1,6 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2018 Jul 3
+" Last Change: 2019 Oct 28
" Exit quickly when:
" - this plugin was already loaded (or disabled)
@@ -36,7 +36,7 @@ set cpo-=C
" The function that is invoked (very often) to define a ":match" highlighting
" for any matching paren.
-function! s:Highlight_Matching_Pair()
+func s:Highlight_Matching_Pair()
" Remove any previous match.
if exists('w:paren_hl_on') && w:paren_hl_on
silent! call matchdelete(3)
@@ -196,10 +196,10 @@ function! s:Highlight_Matching_Pair()
endfunction
" Define commands that will disable and enable the plugin.
-command! DoMatchParen call s:DoMatchParen()
-command! NoMatchParen call s:NoMatchParen()
+command DoMatchParen call s:DoMatchParen()
+command NoMatchParen call s:NoMatchParen()
-func! s:NoMatchParen()
+func s:NoMatchParen()
let w = winnr()
noau windo silent! call matchdelete(3)
unlet! g:loaded_matchparen
@@ -207,7 +207,7 @@ func! s:NoMatchParen()
au! matchparen
endfunc
-func! s:DoMatchParen()
+func s:DoMatchParen()
runtime plugin/matchparen.vim
let w = winnr()
silent windo doau CursorMoved
diff --git a/runtime/syntax/dart.vim b/runtime/syntax/dart.vim
new file mode 100644
index 0000000..d1c2bf2
--- /dev/null
+++ b/runtime/syntax/dart.vim
@@ -0,0 +1,90 @@
+" Vim syntax file
+"
+" Language: Dart
+" Maintainer: Eugene 'pr3d4t0r' Ciurana <dart.syntax AT cime.net >
+" Source: https://github.com/pr3d4t0r/dart-vim-syntax
+" Last Update: 2019 Oct 19
+"
+" License: Vim is Charityware. dart.vim syntax is Charityware.
+" (c) Copyright 2019 by Eugene Ciurana / pr3d4t0r. Licensed
+" under the standard VIM LICENSE - Vim command :help uganda.txt
+" for details.
+"
+" Questions, comments: <dart.syntax AT cime.net>
+" https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r
+"
+" vim: set fileencoding=utf-8:
+
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+
+syn keyword dartCommentTodo contained TODO FIXME XXX TBD
+syn match dartLineComment "//.*" contains=dartTodo,@Spell
+syn match dartCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
+syn region dartComment start="/\*" end="\*/" contains=@Spell,dartTodo
+syn keyword dartReserved assert async await class const export extends external final hide import implements interface library mixin on show super sync yield
+syn match dartNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+
+
+syn keyword dartBoolean false true
+syn keyword dartBranch break continue
+syn keyword dartConditional if else switch
+syn keyword dartException catch finally rethrow throw try
+syn keyword dartIdentifier abstract covariant deferred dynamic factory Function operator part static this typedef var
+syn keyword dartLabel case default
+syn keyword dartNull null
+syn keyword dartOperator is new
+syn keyword dartRepeat for do in while
+syn keyword dartStatement return with
+syn keyword dartType bool double enum int String StringBuffer void
+syn keyword dartTodo contained TODO FIXME XXX
+
+
+syn match dartEscape contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn match dartSpecialError contained "\\."
+syn match dartStrInterpol contained "\${[\x, _]*\}"
+
+syn region dartDQString start=+"+ end=+"+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell
+syn region dartSQString start=+'+ end=+'+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell
+
+syn match dartBraces "[{}\[\]]"
+syn match dartParens "[()]"
+
+
+syn sync fromstart
+syn sync maxlines=100
+
+
+hi def link dartBoolean Boolean
+hi def link dartBranch Conditional
+hi def link dartComment Comment
+hi def link dartConditional Conditional
+hi def link dartDQString String
+hi def link dartEscape SpecialChar
+hi def link dartException Exception
+hi def link dartIdentifier Identifier
+hi def link dartLabel Label
+hi def link dartLineComment Comment
+hi def link dartNull Keyword
+hi def link dartOperator Operator
+hi def link dartRepeat Repeat
+hi def link dartReserved Keyword
+hi def link dartSQString String
+hi def link dartSpecialError Error
+hi def link dartStatement Statement
+hi def link dartStrInterpol Special
+hi def link dartTodo Todo
+hi def link dartType Type
+
+
+let b:current_syntax = "dart"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
index 2d61206..eb82613 100644
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2019 Sep 07
+" Last Change: 2019 Oct 20
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Standard syntax initialization
@@ -17,11 +17,33 @@ syn case ignore
let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\='
let s:binNMU='binary-only=yes'
+let s:cpo = &cpo
+set cpo-=C
+let s:supported = [
+ \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
+ \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
+ \ 'sid', 'rc-buggy',
+ \
+ \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'focal', 'devel'
+ \ ]
+let s:unsupported = [
+ \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
+ \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze',
+ \
+ \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
+ \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
+ \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
+ \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic'
+ \ ]
+let &cpo=s:cpo
+
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
-syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|bookworm|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+exe 'syn match debchangelogTarget contained "\%( \%('.join(s:supported, '\|').'\)\>[-[:alnum:]]*\)\+"'
+exe 'syn match debchangelogUnsupportedTarget contained "\%( \%('.join(s:unsupported, '\|').'\)\>[-[:alnum:]]*\)\+"'
+syn keyword debchangelogUnreleased contained UNRELEASED
syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
@@ -29,7 +51,7 @@ syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+"
syn match debchangelogEmail contained "<.\{-}>"
" Define the entries that make up the changelog
-syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogVersion,debchangelogBinNMU oneline
+syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogUnsupportedTarget,debchangelogUnreleased,debchangelogVersion,debchangelogBinNMU oneline
syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline
syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline
@@ -44,6 +66,8 @@ hi def link debchangelogOtherKV Identifier
hi def link debchangelogName Comment
hi def link debchangelogVersion Identifier
hi def link debchangelogTarget Identifier
+hi def link debchangelogUnsupportedTarget Identifier
+hi def link debchangelogUnreleased WarningMsg
hi def link debchangelogEmail Special
let b:current_syntax = 'debchangelog'
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
index 97acbf6..349b2ac 100644
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2019 Sep 07
+" Last Change: 2019 Oct 18
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
" Standard syntax initialization
@@ -26,7 +26,7 @@ let s:supported = [
\ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
\ 'sid', 'rc-buggy',
\
- \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'devel'
+ \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'focal', 'devel'
\ ]
let s:unsupported = [
\ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
diff --git a/runtime/syntax/dtd.vim b/runtime/syntax/dtd.vim
index ae0bd12..ef0592e 100644
--- a/runtime/syntax/dtd.vim
+++ b/runtime/syntax/dtd.vim
@@ -1,10 +1,11 @@
" Vim syntax file
-" Language: DTD (Document Type Definition for XML)
-" Maintainer: Johannes Zellner <johannes@zellner.org>
-" Author and previous maintainer:
-" Daniel Amyot <damyot@site.uottawa.ca>
-" Last Change: Tue, 27 Apr 2004 14:54:59 CEST
-" Filenames: *.dtd
+" Language: DTD (Document Type Definition for XML)
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Repository: https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Author: Daniel Amyot <damyot@site.uottawa.ca>
+" Last Changed: Sept 24, 2019
+" Filenames: *.dtd
"
" REFERENCES:
" http://www.w3.org/TR/html40/
diff --git a/runtime/syntax/meson.vim b/runtime/syntax/meson.vim
new file mode 100644
index 0000000..78de2ab
--- /dev/null
+++ b/runtime/syntax/meson.vim
@@ -0,0 +1,165 @@
+" Vim syntax file
+" Language: Meson
+" License: VIM License
+" Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
+" Last Change: 2019 Oct 18
+" Credits: Zvezdan Petkovic <zpetkovic@acm.org>
+" Neil Schemenauer <nas@meson.ca>
+" Dmitry Vasiliev
+"
+" This version is copied and edited from python.vim
+" It's very basic, and doesn't do many things I'd like it to
+" For instance, it should show errors for syntax that is valid in
+" Python but not in Meson.
+"
+" Optional highlighting can be controlled using these variables.
+"
+" let meson_space_error_highlight = 1
+"
+
+" For version 5.x: Clear all syntax items.
+" For version 6.x: Quit when a syntax file was already loaded.
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" We need nocompatible mode in order to continue lines with backslashes.
+" Original setting will be restored.
+let s:cpo_save = &cpo
+set cpo&vim
+
+" http://mesonbuild.com/Syntax.html
+syn keyword mesonConditional elif else if endif
+syn keyword mesonRepeat foreach endforeach
+syn keyword mesonOperator and not or
+
+syn match mesonComment "#.*$" contains=mesonTodo,@Spell
+syn keyword mesonTodo FIXME NOTE NOTES TODO XXX contained
+
+" Strings can either be single quoted or triple counted across multiple lines,
+" but always with a '
+syn region mesonString
+ \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1"
+ \ contains=mesonEscape,@Spell
+syn region mesonString
+ \ start="\z('''\)" end="\z1" keepend
+ \ contains=mesonEscape,mesonSpaceError,@Spell
+
+syn match mesonEscape "\\[abfnrtv'\\]" contained
+syn match mesonEscape "\\\o\{1,3}" contained
+syn match mesonEscape "\\x\x\{2}" contained
+syn match mesonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match mesonEscape "\\N{\a\+\%(\s\a\+\)*}" contained
+syn match mesonEscape "\\$"
+
+" Meson only supports integer numbers
+" http://mesonbuild.com/Syntax.html#numbers
+syn match mesonNumber "\<\d\+\>"
+
+" booleans
+syn keyword mesonConstant false true
+
+" Built-in functions
+syn keyword mesonBuiltin
+ \ add_global_arguments
+ \ add_global_link_arguments
+ \ add_languages
+ \ add_project_arguments
+ \ add_project_link_arguments
+ \ add_test_setup
+ \ alias_target
+ \ assert
+ \ benchmark
+ \ both_libraries
+ \ build_machine
+ \ build_target
+ \ configuration_data
+ \ configure_file
+ \ custom_target
+ \ declare_dependency
+ \ dependency
+ \ disabler
+ \ environment
+ \ error
+ \ executable
+ \ files
+ \ find_library
+ \ find_program
+ \ generator
+ \ get_option
+ \ get_variable
+ \ gettext
+ \ host_machine
+ \ import
+ \ include_directories
+ \ install_data
+ \ install_headers
+ \ install_man
+ \ install_subdir
+ \ is_disabler
+ \ is_variable
+ \ jar
+ \ join_paths
+ \ library
+ \ meson
+ \ message
+ \ option
+ \ project
+ \ run_command
+ \ run_target
+ \ set_variable
+ \ shared_library
+ \ shared_module
+ \ static_library
+ \ subdir
+ \ subdir_done
+ \ subproject
+ \ target_machine
+ \ test
+ \ vcs_tag
+ \ warning
+
+if exists("meson_space_error_highlight")
+ " trailing whitespace
+ syn match mesonSpaceError display excludenl "\s\+$"
+ " mixed tabs and spaces
+ syn match mesonSpaceError display " \+\t"
+ syn match mesonSpaceError display "\t\+ "
+endif
+
+if version >= 508 || !exists("did_meson_syn_inits")
+ if version <= 508
+ let did_meson_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " The default highlight links. Can be overridden later.
+ HiLink mesonStatement Statement
+ HiLink mesonConditional Conditional
+ HiLink mesonRepeat Repeat
+ HiLink mesonOperator Operator
+ HiLink mesonComment Comment
+ HiLink mesonTodo Todo
+ HiLink mesonString String
+ HiLink mesonEscape Special
+ HiLink mesonNumber Number
+ HiLink mesonBuiltin Function
+ HiLink mesonConstant Number
+ if exists("meson_space_error_highlight")
+ HiLink mesonSpaceError Error
+ endif
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "meson"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/named.vim b/runtime/syntax/named.vim
index 210d387..292d1b2 100644
--- a/runtime/syntax/named.vim
+++ b/runtime/syntax/named.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: BIND configuration file
" Maintainer: Nick Hibma <nick@van-laarhoven.org>
-" Last Change: 2007-01-30
+" Last Change: 2019 Oct 08
" Filenames: named.conf, rndc.conf
" Location: http://www.van-laarhoven.org/vim/syntax/named.vim
"
@@ -54,7 +54,7 @@ syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhi
syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
" --- IntSection: section that does not contain other sections
-syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
+syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError,namedComment
" --- IntKeyword: keywords contained within `{ ... }' sections only
" + these keywords are contained within `key' and `acl' sections
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 78c9d26..c080a26 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 8.0 script
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: July 18, 2019
-" Version: 8.0-23
+" Last Change: October 31, 2019
+" Version: 8.0-27
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
" Automatically generated keyword lists: {{{1
@@ -19,27 +19,24 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
-syn keyword vimCommand contained a ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletl dep diffpu[t] dl dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tch[dir] tf[irst] tlmenu tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] wundo xme xr[estore]
-syn keyword vimCommand contained ab arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] cle[arjumps] cnor comp[iler] cpf[ile] cun delc[ommand] deletp di[splay] diffs[plit] dli[st] ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs tcld[o] th[row] tln tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wv[iminfo] xmenu xunme
-syn keyword vimCommand contained abc[lear] argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] inor ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tclf[ile] tj[ump] tlnoremenu tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] x[it] xnoreme xunmenu
-syn keyword vimCommand contained abo[veleft] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delep dell diffg[et] dig[raphs] doau e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] te[aroff] tl[ast] tlu tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq xa[ll] xnoremenu xwininfo
-syn keyword vimCommand contained addd arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cn[ext] colo[rscheme] cons[t] cs d[elete] deletel delm[arks] diffo[ff] dir doaut ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcd ter[minal] tlm tlunmenu tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xmapc[lear] xprop y[ank]
-syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] com cope[n] cscope debug deletep delp diffp[atch] dj[ump] dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir
+syn keyword vimCommand contained a ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletl dep diffpu[t] dl dr[op] ec em[enu] ene[w] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tch[dir] tf[irst] tlmenu tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] wundo xme xr[estore]
+syn keyword vimCommand contained ab arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] cle[arjumps] cnor comp[iler] cpf[ile] cun delc[ommand] deletp di[splay] diffs[plit] dli[st] ds[earch] echoe[rr] en[dif] eval filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs tcld[o] th[row] tln tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wv[iminfo] xmenu xunme
+syn keyword vimCommand contained abc[lear] argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do dsp[lit] echom[sg] endf[unction] ex filetype fix[del] for gui helpg[rep] ia in j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tclf[ile] tj[ump] tlnoremenu tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] x[it] xnoreme xunmenu
+syn keyword vimCommand contained abo[veleft] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delep dell diffg[et] dig[raphs] doau e[dit] echon endfo[r] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] inor ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] te[aroff] tl[ast] tlu tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq xa[ll] xnoremenu xwininfo
+syn keyword vimCommand contained addd arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cn[ext] colo[rscheme] cons[t] cs d[elete] deletel delm[arks] diffo[ff] dir doaut ea el[se] endt[ry] exu[sage] fin[d] foldc[lose] g h[elp] hi if intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcd ter[minal] tlm tlunmenu tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xmapc[lear] xprop y[ank]
+syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] com cope[n] cscope debug deletep delp diffp[atch] dj[ump] dp earlier elsei[f] endw[hile] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo]
syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained Arguments Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Winbar XMLent XMLns
-" added later
-syn keyword vimCommand contained eval
-
" vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained acd ambw arshape background ballooneval bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef mle modelineexpr mousehide mps nu opendevice paste pex pmbcs printdevice printoptions pw qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta tagfunc tbi term termwintype tgc titlelen toolbariconsize ttimeout ttymouse twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan
-syn keyword vimOption contained ai anti autochdir backspace balloonevalterm bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousem msm number operatorfunc pastetoggle pexpr pmbfn printencoding prompt pythondll quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline taglength tbidi termbidi terse tgst titleold top ttimeoutlen ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
-syn keyword vimOption contained akm antialias autoindent backup balloonexpr bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lrm magic maxfuncdepth menuitems mm modifiable mousemodel mzq numberwidth opfunc patchexpr pfn popt printexpr pt pythonhome rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tagrelative tbis termencoding textauto thesaurus titlestring tpm ttm ttytype uc undoreload vb vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
-syn keyword vimOption contained al ar autoread backupcopy bdir bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list ls makeef maxmapdepth mfd mmd modified mouses mzquantum nuw osfiletype patchmode ph pp printfont pumheight pythonthreedll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tags tbs termguicolors textmode tildeop tl tr tty tw udf updatecount vbs viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
-syn keyword vimOption contained aleph arab autowrite backupdir bdlay bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imc imsf inde is isprint kmp lbr listchars lsp makeencoding maxmem mh mmp more mouseshape mzschemedll odev pa path pheader preserveindent printheader pumwidth pythonthreehome readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tagstack tc termwinkey textwidth timeout tm ts ttybuiltin twk udir updatetime vdir viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
-syn keyword vimOption contained allowrevins arabic autowriteall backupext belloff binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm luadll makeprg maxmempattern mis mmt mouse mouset mzschemegcdll oft packpath pdev pi previewheight printmbcharset pvh pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tal tcldll termwinscroll tf timeoutlen to tsl ttyfast tws ul ur ve vif vts wcr wi wildmenu winfixheight wiv wrap ws
-syn keyword vimOption contained altkeymap arabicshape aw backupskip beval bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap lw mat maxmemtot mkspellmem mod mousef mousetime nf ofu para penc pm previewwindow printmbfont pvw pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tb tenc termwinsize tfu title toolbar tsr ttym twsl undodir ut verbose viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
-syn keyword vimOption contained ambiwidth ari awa balloondelay bevalterm bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lnr lz matchpairs mco ml modeline mousefocus mp nrformats omnifunc paragraphs perldll
+syn keyword vimOption contained acd ambw arshape background ballooneval bex bl brk buftype cf cinkeys cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lrm magic maxfuncdepth menuitems mm modifiable mousemodel mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome redrawtime ri rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta tagfunc tbi term termwintype tgc titlelen toolbariconsize ttimeout ttymouse twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan
+syn keyword vimOption contained ai anti autochdir backspace balloonevalterm bexpr bo browsedir casemap cfu cino cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list ls makeef maxmapdepth mfd mmd modified mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx regexpengine rightleft rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline taglength tbidi termbidi terse tgst titleold top ttimeoutlen ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
+syn keyword vimOption contained akm antialias autoindent backup balloonexpr bg bomb bs cb ch cinoptions cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imc imsf inde is isprint kmp lbr listchars lsp makeencoding maxmem mh mmp more mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion relativenumber rightleftcmd ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tagrelative tbis termencoding textauto thesaurus titlestring tpm ttm ttytype uc undoreload vb vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
+syn keyword vimOption contained al ar autoread backupcopy bdir bh breakat bsdir cc charconvert cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm luadll makeprg maxmempattern mis mmt mouse mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe remap rl rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tags tbs termguicolors textmode tildeop tl tr tty tw udf updatecount vbs viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
+syn keyword vimOption contained aleph arab autowrite backupdir bdlay bin breakindent bsk ccv ci cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap lw mat maxmemtot mkspellmem mod mousef mousetime nf ofu para penc pm previewwindow printoptions pw quoteescape renderoptions rlc ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tagstack tc termwinkey textwidth timeout tm ts ttybuiltin twk udir updatetime vdir viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
+syn keyword vimOption contained allowrevins arabic autowriteall backupext belloff binary breakindentopt bt cd cin clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lnr lz matchpairs mco ml modeline mousefocus mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll rdt report rnu ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tal tcldll termwinscroll tf timeoutlen to tsl ttyfast tws ul ur ve vif vts wcr wi wildmenu winfixheight wiv wrap ws
+syn keyword vimOption contained altkeymap arabicshape aw backupskip beval bk bri bufhidden cdpath cindent cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef mle modelineexpr mousehide mps nu opendevice paste pex pmbfn printencoding pt pythonhome re restorescreen ro rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tb tenc termwinsize tfu title toolbar tsr ttym twsl undodir ut verbose viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
+syn keyword vimOption contained ambiwidth ari awa balloondelay bevalterm bkc briopt buflisted cedit cink cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousem msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll readonly revins rop
" vimOptions: These are the turn-off setting variants {{{2
syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolnr nolrm noma nomagic noml nomod nomodelineexpr nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup
@@ -52,8 +49,8 @@ syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautoc
syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr invlist invlpl
" termcap codes (which can also be set) {{{2
-syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_kb t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_Ri t_RI t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_Si t_SI t_so t_sr t_SR t_ST t_te t_Te t_ti t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR
-syn keyword vimOption contained t_8f t_AF t_AL t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 t_k8 t_k9 t_KA t_kB
+syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_kb t_KB t_kd t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_Ri t_RI t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_Si t_SI t_so t_sr t_SR t_ST t_te t_Te t_TE t_ti t_TI t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR
+syn keyword vimOption contained t_8f t_AF t_AL t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 t_k8 t_k9 t_KA t_kB t_KC t_kD
syn match vimOption contained "t_%1"
syn match vimOption contained "t_#2"
syn match vimOption contained "t_#4"
@@ -69,29 +66,29 @@ syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beauti
" AutoCmd Events {{{2
syn case ignore
-syn keyword vimAutoEvent contained BufAdd BufDelete BufFilePost BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI DiffUpdated DirChanged EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TermResponse TextChanged TextChangedI TextChangedP TextYankPost User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew
-syn keyword vimAutoEvent contained BufCreate BufEnter BufFilePre
+syn keyword vimAutoEvent contained BufAdd BufDelete BufFilePost BufHidden BufNew BufRead BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI DiffUpdated DirChanged EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TextChanged TextChangedI TextChangedP TextYankPost User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew
+syn keyword vimAutoEvent contained BufCreate BufEnter BufFilePre BufLeave BufNewFile BufReadCmd
" Highlight commonly used Groupnames {{{2
syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
" Default highlighting groups {{{2
-syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
+syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr LineNrAbove LineNrBelow MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
syn match vimHLGroup contained "Conceal"
syn case match
" Function Names {{{2
-syn keyword vimFuncName contained abs appendbufline asin assert_fails assert_notmatch balloon_gettext bufadd bufname byteidx char2nr ch_evalexpr ch_log ch_readraw cindent complete_check cosh deepcopy diff_hlID eventhandler exp filereadable float2nr foldclosed foreground getbufinfo getcharmod getcmdwintype getfontname getjumplist getpos gettabvar getwinposx globpath histadd hlID input inputsecret islocked job_setoptions js_decode len lispindent localtime maparg matcharg matchstrpos mzeval perleval popup_create popup_getpos popup_setoptions printf prop_clear prop_type_change py3eval readfile reltimestr remote_send resolve screenchar screenstring searchpos setcharsearch setloclist settabvar sha256 sign_getdefined sign_placelist simplify sound_clear sound_stop sqrt strcharpart strgetchar strpart submatch synconcealed synstack tabpagenr tan term_dumpload term_getattr term_getscrolled term_gettty term_setansicolors term_start test_feedinput test_ignore_error test_null_job test_option_not_set test_setmouse timer_start toupper type values winbufnr win_getid win_id2win winrestcmd winwidth
-syn keyword vimFuncName contained acos argc assert_beeps assert_false assert_report balloon_show bufexists bufnr byteidxcomp ch_canread ch_evalraw ch_logfile ch_sendexpr clearmatches complete_info count delete empty executable expand filewritable floor foldclosedend funcref getbufline getcharsearch getcompletion getfperm getline getqflist gettabwinvar getwinposy has histdel hostname inputdialog insert isnan job_start js_encode libcall list2str log mapcheck matchdelete max nextnonblank popup_atcursor popup_dialog popup_hide popup_settext prompt_setcallback prop_find prop_type_delete pyeval reg_executing remote_expr remote_startserver reverse screenchars search server2client setcmdpos setmatches settabwinvar shellescape sign_getplaced sign_undefine sin soundfold spellbadword str2float strchars stridx strridx substitute synID system tabpagewinnr tanh term_dumpwrite term_getcursor term_getsize term_list term_setkill term_wait test_garbagecollect_now test_null_blob test_null_list test_override test_settime timer_stop tr undofile virtcol wincol win_gotoid winlayout winrestview wordcount
-syn keyword vimFuncName contained add argidx assert_equal assert_inrange assert_true balloon_split buflisted bufwinid call ch_close ch_getbufnr ch_open ch_sendraw col confirm cscope_connection deletebufline environ execute expandcmd filter fmod foldlevel function getbufvar getcmdline getcurpos getfsize getloclist getreg gettagstack getwinvar has_key histget iconv inputlist invert items job_status json_decode libcallnr listener_add log10 match matchend min nr2char popup_beval popup_filter_menu popup_menu popup_show prompt_setinterrupt prop_list prop_type_get pyxeval reg_recording remote_foreground remove round screencol searchdecl serverlist setenv setpos settagstack shiftwidth sign_jump sign_unplace sinh sound_playevent spellsuggest str2list strdisplaywidth string strtrans swapinfo synIDattr systemlist tagfiles tempname term_getaltscreen term_getjob term_getstatus term_scrape term_setrestore test_alloc_fail test_garbagecollect_soon test_null_channel test_null_partial test_refcount timer_info timer_stopall trim undotree visualmode win_execute winheight winline winsaveview writefile
-syn keyword vimFuncName contained and arglistid assert_equalfile assert_match atan browse bufload bufwinnr ceil ch_close_in ch_getjob ch_read ch_setoptions complete copy cursor did_filetype escape exepath extend finddir fnameescape foldtext garbagecollect getchangelist getcmdpos getcwd getftime getmatches getregtype getwininfo glob haslocaldir histnr indent inputrestore isdirectory job_getchannel job_stop json_encode line listener_flush luaeval matchadd matchlist mkdir or popup_clear popup_filter_yesno popup_move pow prompt_setprompt prop_remove prop_type_list range reltime remote_peek rename rubyeval screenpos searchpair setbufline setfperm setqflist setwinvar sign_define sign_place sign_unplacelist sort sound_playfile split str2nr strftime strlen strwidth swapname synIDtrans tabpagebuflist taglist term_dumpdiff term_getansicolors term_getline term_gettitle term_sendkeys term_setsize test_autochdir test_getvalue test_null_dict test_null_string test_scrollbar timer_pause tolower trunc uniq wildmenumode win_findbuf win_id2tabwin winnr win_screenpos xor
-syn keyword vimFuncName contained append argv assert_exception assert_notequal atan2 browsedir bufloaded byte2line changenr chdir ch_info ch_readblob ch_status complete_add cos debugbreak diff_filler eval exists feedkeys findfile fnamemodify foldtextresult get getchar getcmdtype getenv getftype getpid gettabinfo getwinpos glob2regpat hasmapto hlexists index inputsave isinf job_info join keys line2byte listener_remove map matchaddpos matchstr mode pathshorten popup_close popup_getoptions popup_notification prevnonblank prop_add prop_type_add pumvisible readdir reltimefloat remote_read repeat screenattr screenrow searchpairpos setbufvar setline setreg
+syn keyword vimFuncName contained abs appendbufline asin assert_fails assert_notmatch balloon_gettext bufadd bufname byteidx char2nr ch_evalexpr ch_log ch_readraw cindent complete_check cosh deepcopy diff_hlID eventhandler exp filereadable float2nr foldclosed foreground getbufinfo getcharmod getcmdwintype getfontname getimstatus getpid gettabinfo getwinpos glob2regpat hasmapto hlexists index inputsave isinf job_info join keys line2byte listener_remove map matchaddpos matchstr mode pathshorten popup_close popup_findinfo popup_menu popup_show prompt_setinterrupt prop_list prop_type_get pyeval reg_executing remote_expr remote_startserver reverse screenchars search server2client setcmdpos setmatches settabwinvar shiftwidth sign_place simplify soundfold spellsuggest str2list strdisplaywidth string strtrans swapinfo synIDattr systemlist tagfiles tempname term_getaltscreen term_getjob term_getstatus term_scrape term_setkill term_wait test_garbagecollect_now test_null_blob test_null_list test_override test_settime timer_stop tr undofile virtcol wincol win_gotoid winlayout winrestview winwidth
+syn keyword vimFuncName contained acos argc assert_beeps assert_false assert_report balloon_show bufexists bufnr byteidxcomp ch_canread ch_evalraw ch_logfile ch_sendexpr clearmatches complete_info count delete empty executable expand filewritable floor foldclosedend funcref getbufline getcharsearch getcompletion getfperm getjumplist getpos gettabvar getwinposx globpath histadd hlID input inputsecret islocked job_setoptions js_decode len lispindent localtime maparg matcharg matchstrpos mzeval perleval popup_create popup_findpreview popup_move pow prompt_setprompt prop_remove prop_type_list pyxeval reg_recording remote_foreground remove round screencol searchdecl serverlist setenv setpos settagstack sign_define sign_placelist sin sound_playevent split str2nr strftime strlen strwidth swapname synIDtrans tabpagebuflist taglist term_dumpdiff term_getansicolors term_getline term_gettitle term_sendkeys term_setrestore test_alloc_fail test_garbagecollect_soon test_null_channel test_null_partial test_refcount timer_info timer_stopall trim undotree visualmode win_execute winheight winline winsaveview wordcount
+syn keyword vimFuncName contained add argidx assert_equal assert_inrange assert_true balloon_split buflisted bufwinid call ch_close ch_getbufnr ch_open ch_sendraw col confirm cscope_connection deletebufline environ execute expandcmd filter fmod foldlevel function getbufvar getcmdline getcurpos getfsize getline getqflist gettabwinvar getwinposy has histdel hostname inputdialog insert isnan job_start js_encode libcall list2str log mapcheck matchdelete max nextnonblank popup_atcursor popup_dialog popup_getoptions popup_notification prevnonblank prop_add prop_type_add pum_getpos range reltime remote_peek rename rubyeval screenpos searchpair setbufline setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playfile sqrt strcharpart strgetchar strpart submatch synconcealed synstack tabpagenr tan term_dumpload term_getattr term_getscrolled term_gettty term_setansicolors term_setsize test_autochdir test_getvalue test_null_dict test_null_string test_scrollbar timer_pause tolower trunc uniq wildmenumode win_findbuf win_id2tabwin winnr win_screenpos writefile
+syn keyword vimFuncName contained and arglistid assert_equalfile assert_match atan browse bufload bufwinnr ceil ch_close_in ch_getjob ch_read ch_setoptions complete copy cursor did_filetype escape exepath extend finddir fnameescape foldtext garbagecollect getchangelist getcmdpos getcwd getftime getloclist getreg gettagstack getwinvar has_key histget iconv inputlist invert items job_status json_decode libcallnr listener_add log10 match matchend min nr2char popup_beval popup_filter_menu popup_getpos popup_setoptions printf prop_clear prop_type_change pumvisible readdir reltimefloat remote_read repeat screenattr screenrow searchpairpos setbufvar setline setreg sha256 sign_getplaced sign_unplace sort sound_stop state strchars stridx strridx substitute synID system tabpagewinnr tanh term_dumpwrite term_getcursor term_getsize term_list term_setapi term_start test_feedinput test_ignore_error test_null_job test_option_not_set test_setmouse timer_start toupper type values winbufnr win_getid win_id2win winrestcmd win_splitmove xor
+syn keyword vimFuncName contained append argv assert_exception assert_notequal atan2 browsedir bufloaded byte2line changenr chdir ch_info ch_readblob ch_status complete_add cos debugbreak diff_filler eval exists feedkeys findfile fnamemodify foldtextresult get getchar getcmdtype getenv getftype getmatches getregtype getwininfo glob haslocaldir histnr indent inputrestore isdirectory job_getchannel job_stop json_encode line listener_flush luaeval matchadd matchlist mkdir or popup_clear popup_filter_yesno popup_hide popup_settext prompt_setcallback prop_find prop_type_delete py3eval readfile reltimestr remote_send resolve screenchar screenstring searchpos setcharsearch setloclist settabvar shellescape sign_jump sign_unplacelist sound_clear spellbadword str2float
"--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1
-" Set up folding commands
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
+" Set up folding commands {{{2
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
if g:vimsyn_folding =~# 'a'
com! -nargs=* VimFolda <args> fold
else
@@ -102,6 +99,11 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
else
com! -nargs=* VimFoldf <args>
endif
+ if g:vimsyn_folding =~# 'h'
+ com! -nargs=* VimFoldh <args> fold
+ else
+ com! -nargs=* VimFoldh <args>
+ endif
if g:vimsyn_folding =~# 'l'
com! -nargs=* VimFoldl <args> fold
else
@@ -135,6 +137,7 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
else
com! -nargs=* VimFolda <args>
com! -nargs=* VimFoldf <args>
+ com! -nargs=* VimFoldh <args>
com! -nargs=* VimFoldl <args>
com! -nargs=* VimFoldm <args>
com! -nargs=* VimFoldp <args>
@@ -143,7 +146,7 @@ else
com! -nargs=* VimFoldt <args>
endif
-" commands not picked up by the generator (due to non-standard format)
+" commands not picked up by the generator (due to non-standard format) {{{2
syn keyword vimCommand contained py3
" Deprecated variable options {{{2
@@ -320,7 +323,8 @@ syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTw
syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
syn cluster vimSubstList add=vimCollection
syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(\<s\%[ubstitute]\>\|\<sm\%[agic]\>\|\<sno\%[magic]\>\)[:#[:alpha:]]\@!" nextgroup=vimSubstPat
-syn match vimSubst "\%(^\|[^\\]\)\<s\%[ubstitute]\>[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
+"syn match vimSubst "\%(^\|[^\\]\)\<s\%[ubstitute]\>[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
+syn match vimSubst "\%(^\|[^\\\"']\)\<s\%[ubstitute]\>[:#[:alpha:]\"']\@!" nextgroup=vimSubstPat contained
syn match vimSubst "/\zs\<s\%[ubstitute]\>\ze/" nextgroup=vimSubstPat
syn match vimSubst "\(:\+\s*\|^\s*\)s\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
syn match vimSubst1 contained "\<s\%[ubstitute]\>" nextgroup=vimSubstPat
@@ -360,7 +364,8 @@ syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
-" Complex repeats (:h complex-repeat) {{{2
+" Complex Repeats: (:h complex-repeat) {{{2
+" ===============
syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
@@ -371,22 +376,23 @@ syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ co
syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand
syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
-" Let {{{2
+" Let: {{{2
" ===
-syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar
+syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s\+\%(trim\>\)\=\s*\z(\h\w*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' contains=vimComment
-" Abbreviations {{{2
+" Abbreviations: {{{2
" =============
syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
-" Autocmd {{{2
+" Autocmd: {{{2
" =======
syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
syn match vimAutoCmdSfxList contained "\S*"
syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
-" Echo and Execute -- prefer strings! {{{2
+" Echo And Execute: -- prefer strings! {{{2
" ================
syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
@@ -395,7 +401,7 @@ syn case ignore
syn keyword vimEchoHLNone none
syn case match
-" Maps {{{2
+" Maps: {{{2
" ====
syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] tno[remap] tm[ap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
@@ -410,7 +416,7 @@ syn case ignore
syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
syn case match
-" Menus {{{2
+" Menus: {{{2
" =====
syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
@@ -422,7 +428,7 @@ syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand
syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
-" Angle-Bracket Notation (tnx to Michael Geddes) {{{2
+" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
" ======================
syn case ignore
syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
@@ -434,7 +440,7 @@ syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWO
syn match vimBracket contained "[\\<>]"
syn case match
-" User Function Highlighting {{{2
+" User Function Highlighting: {{{2
" (following Gautam Iyer's suggestion)
" ==========================
syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
@@ -451,12 +457,12 @@ endif
syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
-" Norm {{{2
+" Norm: {{{2
" ====
syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
syn match vimNormCmds contained ".*$"
-" Syntax {{{2
+" Syntax: {{{2
"=======
syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
@@ -555,11 +561,11 @@ syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=v
syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
syn keyword vimSyncNone contained NONE
-" Additional IsCommand, here by reasons of precedence {{{2
+" Additional IsCommand: here by reasons of precedence {{{2
" ====================
syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
-" Highlighting {{{2
+" Highlighting: {{{2
" ============
syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
@@ -609,7 +615,7 @@ syn keyword vimHiClear contained clear nextgroup=vimHiGroup
syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=@vimHiCluster
syn cluster vimFuncBodyList add=vimHiLink
-" Control Characters {{{2
+" Control Characters: {{{2
" ==================
syn match vimCtrlChar "[- -]"
@@ -628,9 +634,11 @@ syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst
syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst
-" Scripts : perl,ruby : Benoit Cerrina {{{2
-" ======= python,tcl: Johannes Zellner
-" lua
+" Embedded Scripts: {{{2
+" ================
+" perl,ruby : Benoit Cerrina
+" python,tcl : Johannes Zellner
+" mzscheme, lua : Charles Campbell
" Allows users to specify the type of embedded script highlighting
" they want: (perl/python/ruby/tcl support)
@@ -892,6 +900,9 @@ if !exists("skip_vim_syntax_inits")
hi def link vimKeyCode vimSpecFile
hi def link vimKeyword Statement
hi def link vimLet vimCommand
+ hi def link vimLetHereDoc vimString
+ hi def link vimLetHereDocStart Special
+ hi def link vimLetHereDocStop Special
hi def link vimLineComment vimComment
hi def link vimMapBang vimCommand
hi def link vimMapModKey vimFuncSID
diff --git a/runtime/syntax/xml.vim b/runtime/syntax/xml.vim
index 7b503ab..f7c7894 100644
--- a/runtime/syntax/xml.vim
+++ b/runtime/syntax/xml.vim
@@ -1,11 +1,14 @@
" Vim syntax file
-" Language: XML
-" Maintainer: Johannes Zellner <johannes@zellner.org>
-" Author and previous maintainer:
-" Paul Siegmann <pauls@euronet.nl>
-" Last Change: 2013 Jun 07
+" Language: XML
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Repository: https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Author: Paul Siegmann <pauls@euronet.nl>
+" Last Changed: Sept 24, 2019
" Filenames: *.xml
-" $Id: xml.vim,v 1.3 2006/04/11 21:32:00 vimboss Exp $
+" Last Change:
+" 20190923 - Fix xmlEndTag to match xmlTag (vim/vim#884)
+" 20190924 - Fix xmlAttribute property (amadeus/vim-xml@d8ce1c946)
" CONFIGURATION:
" syntax folding can be turned on by
@@ -81,7 +84,7 @@ syn match xmlEqual +=+ display
" ^^^^^^^^^^^^^
"
syn match xmlAttrib
- \ +[-'"<]\@1<!\<[a-zA-Z:_][-.0-9a-zA-Z:_]*\>\%(['">]\@!\|$\)+
+ \ +[-'"<]\@1<!\<[a-zA-Z:_][-.0-9a-zA-Z:_]*\>\%(['"]\@!\|$\)+
\ contained
\ contains=xmlAttribPunct,@xmlAttribHook
\ display
@@ -122,7 +125,7 @@ endif
" ^^^
"
syn match xmlTagName
- \ +<\@1<=[^ /!?<>"']\++
+ \ +\%(<\|</\)\@2<=[^ /!?<>"']\++
\ contained
\ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook
\ display
@@ -157,11 +160,11 @@ if exists('g:xml_syntax_folding')
" </tag>
" ^^^^^^
"
- syn match xmlEndTag
- \ +</[^ /!?<>"']\+>+
+ syn region xmlEndTag
+ \ matchgroup=xmlTag start=+</[^ /!?<>"']\@=+
+ \ matchgroup=xmlTag end=+>+
\ contained
- \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook
-
+ \ contains=xmlTagName,xmlNamespace,xmlAttribPunct,@xmlTagHook
" tag elements with syntax-folding.
" NOTE: NO HIGHLIGHTING -- highlighting is done by contained elements
@@ -181,7 +184,7 @@ if exists('g:xml_syntax_folding')
\ start=+<\z([^ /!?<>"']\+\)+
\ skip=+<!--\_.\{-}-->+
\ end=+</\z1\_\s\{-}>+
- \ matchgroup=xmlEndTag end=+/>+
+ \ end=+/>+
\ fold
\ contains=xmlTag,xmlEndTag,xmlCdata,xmlRegion,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook,@Spell
\ keepend
@@ -198,9 +201,10 @@ else
\ matchgroup=xmlTag end=+>+
\ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook
- syn match xmlEndTag
- \ +</[^ /!?<>"']\+>+
- \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook
+ syn region xmlEndTag
+ \ matchgroup=xmlTag start=+</[^ /!?<>"']\@=+
+ \ matchgroup=xmlTag end=+>+
+ \ contains=xmlTagName,xmlNamespace,xmlAttribPunct,@xmlTagHook
endif
diff --git a/runtime/syntax/zsh.vim b/runtime/syntax/zsh.vim
index 3eba438..1e94767 100644
--- a/runtime/syntax/zsh.vim
+++ b/runtime/syntax/zsh.vim
@@ -2,7 +2,7 @@
" Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2018-05-12
+" Latest Revision: 2018-07-13
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh
@@ -112,7 +112,7 @@ syn keyword zshCommands alias autoload bg bindkey break bye cap cd
\ enable eval exec exit export false fc fg
\ functions getcap getln getopts hash history
\ jobs kill let limit log logout popd print
- \ printf pushd pushln pwd r read readonly
+ \ printf pushd pushln pwd r read
\ rehash return sched set setcap shift
\ source stat suspend test times trap true
\ ttyctl type ulimit umask unalias unfunction
@@ -125,7 +125,7 @@ syn keyword zshCommands alias autoload bg bindkey break bye cap cd
" Create a list of option names from zsh source dir:
" #!/bin/zsh
" topdir=/path/to/zsh-xxx
-" grep '^pindex([A-Za-z_]*)$' $topdir/Src/Doc/Zsh/optionsyo |
+" grep '^pindex([A-Za-z_]*)$' $topdir/Doc/Zsh/options.yo |
" while read opt
" do
" echo ${${(L)opt#pindex\(}%\)}
@@ -136,6 +136,7 @@ syn case ignore
syn match zshOptStart /^\s*\%(\%(\%(un\)\?setopt\)\|set\s+[-+]o\)/ nextgroup=zshOption skipwhite
syn match zshOption /
\ \%(\%(\<no_\?\)\?aliases\>\)\|
+ \ \%(\%(\<no_\?\)\?aliasfuncdef\>\)\|\%(\%(no_\?\)\?alias_func_def\>\)\|
\ \%(\%(\<no_\?\)\?allexport\>\)\|\%(\%(no_\?\)\?all_export\>\)\|
\ \%(\%(\<no_\?\)\?alwayslastprompt\>\)\|\%(\%(no_\?\)\?always_last_prompt\>\)\|\%(\%(no_\?\)\?always_lastprompt\>\)\|
\ \%(\%(\<no_\?\)\?alwaystoend\>\)\|\%(\%(no_\?\)\?always_to_end\>\)\|
@@ -168,6 +169,7 @@ syn match zshOption /
\ \%(\%(\<no_\?\)\?chasedots\>\)\|\%(\%(no_\?\)\?chase_dots\>\)\|
\ \%(\%(\<no_\?\)\?chaselinks\>\)\|\%(\%(no_\?\)\?chase_links\>\)\|
\ \%(\%(\<no_\?\)\?checkjobs\>\)\|\%(\%(no_\?\)\?check_jobs\>\)\|
+ \ \%(\%(\<no_\?\)\?checkrunningjobs\>\)\|\%(\%(no_\?\)\?check_running_jobs\>\)\|
\ \%(\%(\<no_\?\)\?clobber\>\)\|
\ \%(\%(\<no_\?\)\?combiningchars\>\)\|\%(\%(no_\?\)\?combining_chars\>\)\|
\ \%(\%(\<no_\?\)\?completealiases\>\)\|\%(\%(no_\?\)\?complete_aliases\>\)\|
@@ -188,7 +190,7 @@ syn match zshOption /
\ \%(\%(\<no_\?\)\?equals\>\)\|
\ \%(\%(\<no_\?\)\?errexit\>\)\|\%(\%(no_\?\)\?err_exit\>\)\|
\ \%(\%(\<no_\?\)\?errreturn\>\)\|\%(\%(no_\?\)\?err_return\>\)\|
- \ \%(\%(\<no_\?\)\?evallineno_\?\)\|\%(\%(no_\?\)\?eval_lineno_\?\)\|
+ \ \%(\%(\<no_\?\)\?evallineno\>\)\|\%(\%(no_\?\)\?eval_lineno\>\)\|
\ \%(\%(\<no_\?\)\?exec\>\)\|
\ \%(\%(\<no_\?\)\?extendedglob\>\)\|\%(\%(no_\?\)\?extended_glob\>\)\|
\ \%(\%(\<no_\?\)\?extendedhistory\>\)\|\%(\%(no_\?\)\?extended_history\>\)\|
@@ -322,6 +324,7 @@ syn match zshOption /
\ \%(\%(\<no_\?\)\?unset\>\)\|
\ \%(\%(\<no_\?\)\?verbose\>\)\|
\ \%(\%(\<no_\?\)\?vi\>\)\|
+ \ \%(\%(\<no_\?\)\?warnnestedvar\>\)\|\%(\%(no_\?\)\?warn_nested_var\>\)\|
\ \%(\%(\<no_\?\)\?warncreateglobal\>\)\|\%(\%(no_\?\)\?warn_create_global\>\)\|
\ \%(\%(\<no_\?\)\?xtrace\>\)\|
\ \%(\%(\<no_\?\)\?zle\>\)/ nextgroup=zshOption,zshComment skipwhite contained
diff --git a/runtime/tutor/tutor.tr.iso9 b/runtime/tutor/tutor.tr.iso9
index af4d18a..d3a7405 100644
--- a/runtime/tutor/tutor.tr.iso9
+++ b/runtime/tutor/tutor.tr.iso9
@@ -1,864 +1,864 @@
===============================================================================
-= V I M T u t o r ' a h o s g e l d i n i z ! - Srm 1.7 =
+= V I M T u t o r ' a h o g e l d i n i z ! - Srm 1.7 =
===============================================================================
- Vim, bu gibi bir egitmen ile aiklanmasi gereken ok fazla komut barindiran,
- olduka kuvvetli bir metin dzenleyicidir. Bu egitmen Vim'i ok amali bir
- dzenleyici olarak kolaylikla kullanabileceginiz yeterli sayida komutu
- aiklamak iin tasarlanmistir.
+ Vim, bu gibi bir eitmen ile aklanmas gereken ok fazla komut barndran,
+ olduka kuvvetli bir metin dzenleyicidir. Bu eitmen Vim'i ok amal bir
+ dzenleyici olarak kolaylkla kullanabileceiniz yeterli sayda komutu
+ aklamak iin tasarlanmtr.
- Egitmeni tamamlama sresi yapacaginiz denemelere bagli olarak 25-30
- dakikadir.
+ Eitmeni tamamlama sresi yapacanz denemelere bal olarak 25-30
+ dakikadr.
- DIKKAT:
- Derslerdeki komutlar bu metni degistirecektir. zerinde alismak iin
- bu dosyanin bir kopyasini alin (eger "vimtutor" uygulamasini
- alistirdiysaniz zaten bir kopyasini almis oldunuz).
+ DKKAT:
+ Derslerdeki komutlar bu metni deitirecektir. zerinde almak iin
+ bu dosyann bir kopyasn aln (eer "vimtutor" uygulamasn
+ altrdysanz zaten bir kopyasn alm oldunuz).
- Bu egitmenin kullanarak gretmek iin tasarlandigini unutmamak nemlidir.
- Bu su anlama gelir; komutlari grenmek iin dogru bir sekilde alistirmaniz
- gerekir. Eger sadece yazilanlari okursaniz komutlari unutursunuz.
+ Bu eitmenin kullanarak retmek iin tasarlandn unutmamak nemlidir.
+ Bu u anlama gelir; komutlar renmek iin doru bir ekilde altrmanz
+ gerekir. Eer sadece yazlanlar okursanz komutlar unutursunuz.
- Simdi Caps-Lock dgmenizin basili olmadigina emin olun ve Ders 1.1'in
- ekrani tamamen doldurmasi iin j dgmesine yeterli miktarda basin.
+ imdi Caps-Lock dmenizin basl olmadna emin olun ve Ders 1.1'in
+ ekran tamamen doldurmas iin j dmesine yeterli miktarda basn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1.1: IMLECI HAREKET ETTIRMEK
+ Ders 1.1: MLEC HAREKET ETTRMEK
-evirmen Notu: Tm derslerde <ENTER> grdgnzde bu dgmeye basmaniz gerekir.
+evirmen Notu: Tm derslerde <ENTER> grdnzde bu dmeye basmanz gerekir.
- ** Imleci hareket ettirmek iin h,j,k,l dgmelerine basin. **
+ ** mleci hareket ettirmek iin h,j,k,l dmelerine basn. **
^
- k Ipucu: h dgmesi soldadir ve sola dogru hareket eder.
- < h l > l dgmesi sagdadir ve saga dogru hareket eder.
- j j dgmesi asagi dogru bir oka benzer.
+ k pucu: h dmesi soldadr ve sola doru hareket eder.
+ < h l > l dmesi sadadr ve saa doru hareket eder.
+ j j dmesi aa doru bir oka benzer.
v
- 1. Imleci kendinizi rahat hissedinceye dek ekranda dolastirin.
+ 1. mleci kendinizi rahat hissedinceye dek ekranda dolatrn.
- 2. j dgmesini kendisini yineleyinceye dek basili tutun.
+ 2. j dmesini kendisini yineleyinceye dek basl tutun.
- 3. Asagi dgmesini kullanarak, Ders 1.2'ye gein.
+ 3. Aa dmesini kullanarak, Ders 1.2'ye gein.
- NOT: Eger yazdiginiz bir seyden emin degilseniz, Normal kipe gemek iin
- <ESC> dgmesine basin. Daha sonra istediginiz komutu yeniden yazin.
+ NOT: Eer yazdnz bir eyden emin deilseniz, Normal kipe gemek iin
+ <ESC> dmesine basn. Daha sonra istediiniz komutu yeniden yazn.
- NOT: Ok dgmeleri de ayni ise yarar. Ancak hjkl dgmelerini kullanarak ok
- daha hizli hareket edebilirsiniz. Gerekten.
+ NOT: Ok dmeleri de ayn ie yarar. Ancak hjkl dmelerini kullanarak ok
+ daha hzl hareket edebilirsiniz. Gerekten.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1.2: VIM'DEN IKIS
+ Ders 1.2: VM'DEN IKI
- !! NOT: Asagidaki adimlari yapmadan nce, bu dersi tamamen okuyun.
+ !! NOT: Aadaki admlar yapmadan nce, bu dersi tamamen okuyun.
- 1. Normal kipte oldugunuzdan emin olmak iin <ESC> dgmesine basin.
+ 1. Normal kipte olduunuzdan emin olmak iin <ESC> dmesine basn.
- 2. :q! yazin ve <ENTER>'a basin'.
- Bu dzenleyiciden ikar ve yaptiginiz degisiklikleri KAYDETMEZ.
+ 2. :q! yazn ve <ENTER>'a basn'.
+ Bu dzenleyiciden kar ve yaptnz deiiklikleri KAYDETMEZ.
- 3. vimtutor yazarak yeniden bu belgeyi ain.
+ 3. vimtutor yazarak yeniden bu belgeyi an.
- 4. Eger bu adimlari ezberlediyseniz ve kendinizden eminseniz, 1'den 3'e
- kadar olan adimlari yeniden uygulayin.
+ 4. Eer bu admlar ezberlediyseniz ve kendinizden eminseniz, 1'den 3'e
+ kadar olan admlar yeniden uygulayn.
- 5. Imleci Ders 1.3'e tasiyin.
+ 5. mleci Ders 1.3'e tayn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1.3: METIN DZENLEME - METIN SILME
+ Ders 1.3: METN DZENLEME - METN SLME
- ** Normal kipteyken imlecin altindaki karakteri silmek iin x'e basin. **
+ ** Normal kipteyken imlecin altndaki karakteri silmek iin x'e basn. **
- 1. Imleci asagida ---> ile imlenmis satira gtrn.
+ 1. mleci aada ---> ile imlenmi satra gtrn.
2. Dzeltmeler iin imleci silinmesi gereken karakterin zerine getirin.
- 3. Istenmeyen karakteri silmek iin x dgmesine basin.
+ 3. stenmeyen karakteri silmek iin x dmesine basn.
- 4. Tmce dzelene kadar 2'den 4'e kadar olan adimlari tekrar edin.
+ 4. Tmce dzelene kadar 2'den 4'e kadar olan admlar tekrar edin.
----> Iinek ayyin zzerinden attladi.
+---> inek ayyn zzerinden attlad.
- 5. Simdi satir dzeldi; Ders 1.4'e gein.
+ 5. imdi satr dzeldi; Ders 1.4'e gein.
- NOT: Bu egitmende ilerledike ezberlemeye alismayin, deneyerek grenin.
+ NOT: Bu eitmende ilerledike ezberlemeye almayn, deneyerek renin.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1.4: METIN DZENLEME - METIN GIRME
+ Ders 1.4: METN DZENLEME - METN GRME
- ** Normal kipteyken metin eklemek iin i'ye basin. **
+ ** Normal kipteyken metin eklemek iin i'ye basn. **
- 1. Imleci asagida ---> ile imlenmis ILK satira gtrn.
+ 1. mleci aada ---> ile imlenmi LK satra gtrn.
- 2. Ilk satiri ikincisinin aynisi gibi yapmak iin, imleci eklenmesi gereken
+ 2. lk satr ikincisinin ayns gibi yapmak iin, imleci eklenmesi gereken
metinden sonraki ilk karakterin zerine gtrn.
- 3. i'ye basin ve gerekli eklemeleri yapin.
+ 3. i'ye basn ve gerekli eklemeleri yapn.
- 4. Dzeltilen her hatadan sonra <ESC> dgmesine basarak Normal kipe dnn.
- Tmceyi dzeltmek iin 2'den 4'e kadar olan adimlari tekrar edin.
+ 4. Dzeltilen her hatadan sonra <ESC> dmesine basarak Normal kipe dnn.
+ Tmceyi dzeltmek iin 2'den 4'e kadar olan admlar tekrar edin.
---> Bu metinde eksk.
----> Bu metinde bir sey eksik.
+---> Bu metinde bir ey eksik.
- 5. Artik yapabildiginizi dsnyorsaniz bir sonraki blme gein.
+ 5. Artk yapabildiinizi dnyorsanz bir sonraki blme gein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1.5: METIN DZENLEME - METIN EKLEME
+ Ders 1.5: METN DZENLEME - METN EKLEME
- ** Metin eklemek iin A dgmesine basin. **
+ ** Metin eklemek iin A dmesine basn. **
- 1. Imleci asagida ---> ile imlenmis ILK satira gtrn. Imlecin hangi
- karakterin zerinde oldugu nemli degildir.
+ 1. mleci aada ---> ile imlenmi LK satra gtrn. mlecin hangi
+ karakterin zerinde olduu nemli deildir.
- 2. A'ya basin ve gerekli eklemeleri yapin.
+ 2. A'ya basn ve gerekli eklemeleri yapn.
- 3. Metin eklemeyi bitirdiginizde <ESC>'ye basin ve Normal kipe dnn.
+ 3. Metin eklemeyi bitirdiinizde <ESC>'ye basn ve Normal kipe dnn.
- 4. Imleci asagida ---> ile imlenmis IKINCI satira gtrn ve ikinci ve
- nc adimlari tekrarlayarak tmceyi dzeltin.
+ 4. mleci aada ---> ile imlenmi KNC satra gtrn ve ikinci ve
+ nc admlar tekrarlayarak tmceyi dzeltin.
----> Bu satirda bazi met
- Bu satirda bazi metinler eksik.
----> Bu satirda da bazi metinl
- Bu satirda da bazi metinler eksik gibi grnyor.
+---> Bu satrda baz met
+ Bu satrda baz metinler eksik.
+---> Bu satrda da baz metinl
+ Bu satrda da baz metinler eksik gibi grnyor.
- 5. Artik rahata metin ekleyebildiginizi dsnyorsaniz Ders 1.6'ya gein.
+ 5. Artk rahata metin ekleyebildiinizi dnyorsanz Ders 1.6'ya gein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1.6: DOSYA DZENLEME
+ Ders 1.6: DOSYA DZENLEME
- ** :wq yazmak aik olan dosyayi kaydeder ve Vim'den ikar.
+ ** :wq yazmak ak olan dosyay kaydeder ve Vim'den kar.
- !! NOT: Asagidaki adimlari uygulamadan nce tm bu blm iyice okuyun!
+ !! NOT: Aadaki admlar uygulamadan nce tm bu blm iyice okuyun!
- 1. Bu egitmeni Ders 1.2'de yaptiginiz gibi :q! yazarak kapatin. Veya baska
- bir ubirime erisiminiz varsa orada yapin.
+ 1. Bu eitmeni Ders 1.2'de yaptnz gibi :q! yazarak kapatn. Veya baka
+ bir ubirime eriiminiz varsa orada yapn.
- 2. Komut istemi ekraninda su komutu girin: vim tutor <ENTER>. 'vim', Vim
- dzenleyicisini amak iin kullanacaginiz komut olup 'tutor' da
- dzenlemek istediginiz dosyanin adidir. Degistirilebilen bir dosya
- kullanin.
+ 2. Komut istemi ekrannda u komutu girin: vim tutor <ENTER>. 'vim', Vim
+ dzenleyicisini amak iin kullanacanz komut olup 'tutor' da
+ dzenlemek istediiniz dosyann addr. Deitirilebilen bir dosya
+ kullann.
- 3. Daha nceki derslerde grendiginiz gibi metin girip/ekleyip silin.
+ 3. Daha nceki derslerde rendiiniz gibi metin girip/ekleyip silin.
- 4. :wq <ENTER> yazarak degisiklikleri kaydedin ve Vim'den ikin.
+ 4. :wq <ENTER> yazarak deiiklikleri kaydedin ve Vim'den kn.
- 5. Eger vimtutor'dan birinci adimda iktiysaniz yeniden ain ve asagidaki
+ 5. Eer vimtutor'dan birinci admda ktysanz yeniden an ve aadaki
zet blme gelin.
- 6. Yukaridaki adimlari okuduktan ve anladiktan sonra YAPIN.
+ 6. Yukardaki admlar okuduktan ve anladktan sonra YAPIN.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 1: ZET
+ Ders 1: ZET
- 1. Imle ok dgmeleri veya hjkl dgmeleri kullanilarak hareket ettirilir.
+ 1. mle ok dmeleri veya hjkl dmeleri kullanlarak hareket ettirilir.
- h (sol) / j (asagi) / k (yukari) / l (sag)
+ h (sol) / j (aa) / k (yukar) / l (sa)
- 2. Vim'i komut isteminden baslatmak iin:
+ 2. Vim'i komut isteminden balatmak iin:
vim <ENTER>
veya
- vim DOSYA_ADI <ENTER> kullanin.
+ vim DOSYA_ADI <ENTER> kullann.
- 3. Vim'den ikmak iin nce <ESC>'ye basip sonra:
+ 3. Vim'den kmak iin nce <ESC>'ye basp sonra:
- :q! <ENTER> (degisiklikleri kaydetmeden ikar)
- :wq <ENTER> (degisiklikleri kaydedip ikar) komutlarini kullanin.
+ :q! <ENTER> (deiiklikleri kaydetmeden kar)
+ :wq <ENTER> (deiiklikleri kaydedip kar) komutlarn kullann.
- 4. Imlecin zerinde oldugu karakteri silmek iin x dgmesine basin.
+ 4. mlecin zerinde olduu karakteri silmek iin x dmesine basn.
5. Metin girmek veya eklemek iin:
i metin girin <ESC> imleten nce girer
- A metin girin <ESC> satirdan sonra ekler
+ A metin girin <ESC> satrdan sonra ekler
- NOT: <ESC> dgmesine basmak sizi Normal kipe geri dndrr veya istenmeyen ve
- yarim yazilmis bir komutu iptal eder.
+ NOT: <ESC> dmesine basmak sizi Normal kipe geri dndrr veya istenmeyen ve
+ yarm yazlm bir komutu iptal eder.
- Simdi Ders 2 ile bu egitmeni srdrn.
+ imdi Ders 2 ile bu eitmeni srdrn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.1: SILME KOMUTLARI
+ Ders 2.1: SLME KOMUTLARI
- ** Bir szcg silmek iin dw yazin. **
+ ** Bir szc silmek iin dw yazn. **
- 1. Normal kipte oldugunuzdan emin olmak iin <ESC> dgmesine basin.
+ 1. Normal kipte olduunuzdan emin olmak iin <ESC> dmesine basn.
- 2. Imleci asagida ---> ile imlenmis satira gtrn.
+ 2. mleci aada ---> ile imlenmi satra gtrn.
- 3. Imleci silinmesi gereken szcgn basina gtrn.
+ 3. mleci silinmesi gereken szcn bana gtrn.
- 4. Szcg silmek iin dw yazin.
+ 4. Szc silmek iin dw yazn.
- NOT: d harfi siz yazdika ekranin son satirinda grlecektir. Vim sizin w
- yazmanizi bekleyecektir. Eger d'den baska bir sey grrseniz yanlis
- yazmissiniz demektir, <ESC> dgmesine basin ve bastan baslayin.
+ NOT: d harfi siz yazdka ekrann son satrnda grlecektir. Vim sizin w
+ yazmanz bekleyecektir. Eer d'den baka bir ey grrseniz yanl
+ yazmsnz demektir, <ESC> dmesine basn ve batan balayn.
----> Bu satirda erez tmceye ait olmayan leblebi szckler var.
+---> Bu satrda erez tmceye ait olmayan leblebi szckler var.
- 5. Tmce dzelene kadar adim 3 ve 4' tekrar edin ve Ders 2.2'ye gein.
+ 5. Tmce dzelene kadar adm 3 ve 4' tekrar edin ve Ders 2.2'ye gein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.2: DAHA FAZLA SILME KOMUTU
+ Ders 2.2: DAHA FAZLA SLME KOMUTU
- ** Satiri sonuna kadar silmek iin d$ yazin. **
+ ** Satr sonuna kadar silmek iin d$ yazn. **
- 1. Normal kipte oldugunuzdan emin olmak iin <ESC> dgmesine basin.
+ 1. Normal kipte olduunuzdan emin olmak iin <ESC> dmesine basn.
- 2. Imleci asagida ---> ile imlenmis satira gtrn.
+ 2. mleci aada ---> ile imlenmi satra gtrn.
- 3. Imleci dogru olan satirin sonuna gtrn. (Birinci noktadan SONRAKI)
+ 3. mleci doru olan satrn sonuna gtrn. (Birinci noktadan SONRAK)
- 4. Satiri en sona kadar silmek iin d$ yazin. $ imini yazmak iin:
+ 4. Satr en sona kadar silmek iin d$ yazn. $ imini yazmak iin:
Trke Q klavyede <ALT GR> 4,
- Trke F klavyede <SHIFT> 4 ikililerini kullanin.
+ Trke F klavyede <SHIFT> 4 ikililerini kullann.
----> Birileri bu satirin sonunu iki defa yazmis. satirin sonunu iki
- defa yazmis.
+---> Birileri bu satrn sonunu iki defa yazm. satrn sonunu iki
+ defa yazm.
- 5. Neler oldugunu anlamak iin Ders 2.3'e gidin.
+ 5. Neler olduunu anlamak iin Ders 2.3'e gidin.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.3: ISLETMENLER VE HAREKETLER
+ Ders 2.3: LETMENLER VE HAREKETLER
- Metin degistiren birok komut isletmenler ve eklerden olusur. Bir d isletmeni
- ieren silme komutu iin kullanilan biim asagidaki gibidir:
+ Metin deitiren birok komut iletmenler ve eklerden oluur. Bir d iletmeni
+ ieren silme komutu iin kullanlan biim aadaki gibidir:
d hareket
Burada:
- d - silme isletmenidir.
- hareket - isletmenin neyi isletecegidir (asagida listelenmistir).
+ d - silme iletmenidir.
+ hareket - iletmenin neyi ileteceidir (aada listelenmitir).
- Hareketlerin kisa bir listesi iin:
+ Hareketlerin ksa bir listesi iin:
- w - bir sonraki szcgn baslangicina kadar, ilk karakteri DAHIL OLMADAN
- e - su anki szcgn sonuna kadar, son karakteri DAHIL OLARAK
- $ - satirin sonuna kadar, son karakteri DAHIL OLARAK
+ w - bir sonraki szcn balangcna kadar, ilk karakteri DAHL OLMADAN
+ e - u anki szcn sonuna kadar, son karakteri DAHL OLARAK
+ $ - satrn sonuna kadar, son karakteri DAHL OLARAK
- Demeli ki, de komutunu girmek imleten szcgn sonuna kadar siler.
+ Demeli ki, de komutunu girmek imleten szcn sonuna kadar siler.
- NOT: Normal kipte hibir hareket olmadan yalnizca isletmeni girmek imleci
- yukarida belirtildigi gibi hareket ettirir.
+ NOT: Normal kipte hibir hareket olmadan yalnzca iletmeni girmek imleci
+ yukarda belirtildii gibi hareket ettirir.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.4: BIR HAREKET ILE BIRLIKTE SAYIM KULLANMAK
+ Ders 2.4: BR HAREKET LE BRLKTE SAYIM KULLANMAK
- ** Bir hareketten nce sayi kullanmak o hareketi sayi kadar tekrarlatir. **
+ ** Bir hareketten nce say kullanmak o hareketi say kadar tekrarlatr. **
- 1. Imleci asagida ---> ile imlenmis satirin BASINA gtrn.
+ 1. mleci aada ---> ile imlenmi satrn BAINA gtrn.
- 2. 2w yazarak imleci iki szck ileriye tasiyin.
+ 2. 2w yazarak imleci iki szck ileriye tayn.
- 3. 3e yazarak imleci szck ilerideki szcgn sonuna tasiyin.
+ 3. 3e yazarak imleci szck ilerideki szcn sonuna tayn.
- 4. 0 yazarak imleci satirin basina tasiyin.
+ 4. 0 yazarak imleci satrn bana tayn.
- 5. Ikinci ve nc adimlari degisik sayilar kullanarak tekrarlayin.
+ 5. kinci ve nc admlar deiik saylar kullanarak tekrarlayn.
----> Bu zerinde hoplayip ziplayabileceginiz naizane bir satir.
+---> Bu zerinde hoplayp zplayabileceiniz naizane bir satr.
6. Ders 2.5'e gein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.5: BIR SAYIM KULLANARAK DAHA FAZLA SILME ISLEMI
+ Ders 2.5: BR SAYIM KULLANARAK DAHA FAZLA SLME LEM
- ** Bir isletmen ile birlikte sayi kullanmak isletmeni o kadar tekrarlatir. **
+ ** Bir iletmen ile birlikte say kullanmak iletmeni o kadar tekrarlatr. **
- Yukarida sz edilen silme isletmeni ve hareketinin arasina sayi ekleyerek
- yapilan islemi o sayi kadar tekrarlatabilirsiniz.
+ Yukarda sz edilen silme iletmeni ve hareketinin arasna say ekleyerek
+ yaplan ilemi o say kadar tekrarlatabilirsiniz.
- d [sayi] hareket
+ d [say] hareket
- 1. Imleci asagida ---> ile imlenen satirdaki ilk BYK HARFTEN olusan
- szcgn basina getirin.
+ 1. mleci aada ---> ile imlenen satrdaki ilk BYK HARFTEN oluan
+ szcn bana getirin.
- 2. d2w yazarak iki BYK HARFLI szcg silin.
+ 2. d2w yazarak iki BYK HARFL szc silin.
- 3. Birinci ve ikinci adimlari baska bir sayi kullanarak BYK
- HARFLI szckleri tek bir komutta silmek iin yeniden uygulayin.
+ 3. Birinci ve ikinci admlar baka bir say kullanarak BYK
+ HARFL szckleri tek bir komutta silmek iin yeniden uygulayn.
----> Bu ABC DE satirdaki FGG HII JKLM NO PRSST szckler U VY temizlenmistir.
+---> Bu ABC DE satrdaki FG HI JKLM NO PRST szckler U VY temizlenmitir.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.6: SATIRLARDA ISLEM YAPMA
+ Ders 2.6: SATIRLARDA LEM YAPMA
- ** Btn bir satiri silmek iin dd yazin. **
+ ** Btn bir satr silmek iin dd yazn. **
- Btn bir satir silme islemi ok sik kullanildigindan dolayi, Vi
- tasarimcilari bir satiri tamamen silmek iin iki d yazmanin daha kolay
- olduguna karar verdiler.
+ Btn bir satr silme ilemi ok sk kullanldndan dolay, Vi
+ tasarmclar bir satr tamamen silmek iin iki d yazmann daha kolay
+ olduuna karar verdiler.
- 1. Imleci asagidaki tmcecigin ikinci satirina gtrn.
+ 1. mleci aadaki tmceciin ikinci satrna gtrn.
- 2. Satiri silmek iin dd yazin.
+ 2. Satr silmek iin dd yazn.
- 3. Simdi de drdnc satira gidin.
+ 3. imdi de drdnc satra gidin.
- 4. Iki satiri birden silmek iin 2dd yazin.
+ 4. ki satr birden silmek iin 2dd yazn.
----> 1) Gller kirmizidir,
----> 2) amur eglenceli,
----> 3) Menekseler mavi,
+---> 1) Gller krmzdr,
+---> 2) amur elenceli,
+---> 3) Menekeler mavi,
---> 4) Bir arabam var,
----> 5) Saat zamani syler,
----> 6) Seker tatlidir
+---> 5) Saat zaman syler,
+---> 6) eker tatldr
---> 7) Ve sen de ylesin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2.7: GERI AL KOMUTU
+ Ders 2.7: GER AL KOMUTU
- ** Son komutu geri almak iin u, btn bir satiri dzeltmek iin U yazin. **
+ ** Son komutu geri almak iin u, btn bir satr dzeltmek iin U yazn. **
- 1. Imleci asagida ---> ile imlenmis satirda ve ilk hatanin zerine koyun.
+ 1. mleci aada ---> ile imlenmi satrda ve ilk hatann zerine koyun.
- 2. Ilk istenmeyen karakteri silmek iin x yazin.
+ 2. lk istenmeyen karakteri silmek iin x yazn.
- 3. Simdi son alistirilan komutu geri almak iin u yazin.
+ 3. imdi son altrlan komutu geri almak iin u yazn.
- 4. Bu sefer x komutunu kullanarak satirdaki tm hatalari dzeltin.
+ 4. Bu sefer x komutunu kullanarak satrdaki tm hatalar dzeltin.
- 5. Simdi satiri ilk haline evirmek iin byk U yazin.
+ 5. imdi satr ilk haline evirmek iin byk U yazn.
- 6. Simdi U ve daha nceki komutlari geri almak iin birka defa u yazin.
+ 6. imdi U ve daha nceki komutlar geri almak iin birka defa u yazn.
- 7. Birka defa <CTRL> R (<CTRL>'yi basili tutarken R ye basin) yazarak
- geri almalari da geri alin.
+ 7. Birka defa <CTRL> R (<CTRL>'yi basl tutarken R ye basn) yazarak
+ geri almalar da geri aln.
----> Buu satiirdaki hatalari dzeltinn ve sonra koomutu geri alllin.
+---> Buu satrdaki hatalar dzeltinn ve sonra koomutu geri allln.
- 8. Bunlar son derece kullanisli komutlardir. Simdi Ders 2 zete gein.
+ 8. Bunlar son derece kullanl komutlardr. imdi Ders 2 zete gein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 2: ZET
+ Ders 2: ZET
- 1. Imleten itibaren bir szcg silmek iin dw yazin.
+ 1. mleten itibaren bir szc silmek iin dw yazn.
- 2. Imleten itibaren bir satiri silmek iin d$ yazin.
+ 2. mleten itibaren bir satr silmek iin d$ yazn.
- 3. Btn bir satiri silmek iin dd yazin.
+ 3. Btn bir satr silmek iin dd yazn.
- 4. Bir hareketi yenilemek iin nne sayi takisi getirin, 2w gibi.
+ 4. Bir hareketi yenilemek iin nne say taks getirin, 2w gibi.
- 5. Normal kipte bir komut biimi syledir:
+ 5. Normal kipte bir komut biimi yledir:
- isletmen [sayi] hareket
+ iletmen [say] hareket
burada:
- isletmen - ne yapilacagi, silmek iin d rneginde oldugu gibi
- [sayi] - komutun ka kere tekrar edecegini gsteren istege bagli sayi
- hareket - isletmenin nice davranacagi, w (szck), $ (satir sonu) gibi.
+ iletmen - ne yaplaca, silmek iin d rneinde olduu gibi
+ [say] - komutun ka kere tekrar edeceini gsteren istee bal say
+ hareket - iletmenin nice davranaca, w (szck), $ (satr sonu) gibi.
- 6. Bir satirin basina gelmek iin sifir (0) kullanin.
+ 6. Bir satrn bana gelmek iin sfr (0) kullann.
- 7. nceki hareketleri geri almak iin u (kk u) yazin.
- Bir satirdaki tm degisiklikleri geri almak iin U (byk U) yazin.
- Geri almalari geri almak iin <CTRL> R kullanin.
+ 7. nceki hareketleri geri almak iin u (kk u) yazn.
+ Bir satrdaki tm deiiklikleri geri almak iin U (byk U) yazn.
+ Geri almalar geri almak iin <CTRL> R kullann.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 3.1: KOY KOMUTU
+ Ders 3.1: KOY KOMUTU
- ** Son yaptiginiz silmeyi imleten sonraya yerlestirmek iin p yazin. **
+ ** Son yaptnz silmeyi imleten sonraya yerletirmek iin p yazn. **
- 1. Imleci asagida ---> ile imlenmis tmcecige gtrn.
+ 1. mleci aada ---> ile imlenmi tmcecie gtrn.
- 2. Satiri silip Vim'in arabellegine yerlestirmek iin dd yazin.
+ 2. Satr silip Vim'in arabelleine yerletirmek iin dd yazn.
- 3. Imleci, silinmis satiri nereye yerlestirmek istiyorsaniz, o satirin
- ZERINE gtrn.
+ 3. mleci, silinmi satr nereye yerletirmek istiyorsanz, o satrn
+ ZERNE gtrn.
- 4. Normal kipteyken satiri yerlestirmek iin p yazin.
+ 4. Normal kipteyken satr yerletirmek iin p yazn.
- 5. Tm satirlari dogru siraya koymak iin 2'den 4'e kadar olan adimlari
+ 5. Tm satrlar doru sraya koymak iin 2'den 4'e kadar olan admlar
tekrar edin.
----> d) Sen de grendin mi?
----> b) Menekseler mavidir,
----> c) Akil grenilir,
----> a) Gller kirmizidir,
+---> d) Sen de rendin mi?
+---> b) Menekeler mavidir,
+---> c) Akl renilir,
+---> a) Gller krmzdr,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 3.2: DEGISTIR KOMUTU
+ Ders 3.2: DETR KOMUTU
- ** Imlecin altindaki karakteri baskasi ile degistirmek iin rx kullanin. **
+ ** mlecin altndaki karakteri bakas ile deitirmek iin rx kullann. **
- 1. Imleci asagida ---> ile imlenmis ILK satira gtrn.
+ 1. mleci aada ---> ile imlenmi LK satra gtrn.
- 2. Imleci satirdaki ilk hatanin zerine gtrn.
+ 2. mleci satrdaki ilk hatann zerine gtrn.
- 3. Hatayi dzeltmek iin nce r ardindan da dogru karakteri yazin.
+ 3. Hatay dzeltmek iin nce r ardndan da doru karakteri yazn.
- 4. Ilk satir dzelene kadar adim 2 ve 3' tekrar edin.
+ 4. lk satr dzelene kadar adm 2 ve 3' tekrar edin.
----> Bu sativ yazilivken, bivileri yamlis dgmetere basmis.
----> Bu satir yazilirken, birileri yanlis dgmelere basmis.
+---> Bu satv yazlvken, bivileri yaml dmetere basm.
+---> Bu satr yazlrken, birileri yanl dmelere basm.
5. Ders 3.3'ye gein.
- NOT: Unutmayin, ezberleyerek degil deneyerek grenin.
+ NOT: Unutmayn, ezberleyerek deil deneyerek renin.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 3.3: DEGISTIR ISLETMENI
+ Ders 3.3: DETR LETMEN
- ** Bir szcg imleten szck sonuna kadar degistirmek iin ce kullanin. **
+ ** Bir szc imleten szck sonuna kadar deitirmek iin ce kullann. **
- 1. Imleci asagida ---> ile imlenmis ILK satira gtrn.
+ 1. mleci aada ---> ile imlenmi LK satra gtrn.
- 2. Imleci "sutar" daki u'nun zerine yerlestirin.
+ 2. mleci "sutar" daki u'nun zerine yerletirin.
- 3. nce ce ardindan dogru harfleri girin (bu durumda 'atir').
+ 3. nce ce ardndan doru harfleri girin (bu durumda 'atr').
- 4. <ESC> dgmesine basin ve degismesi gereken bir sonraki karaktere gidin.
+ 4. <ESC> dmesine basn ve deimesi gereken bir sonraki karaktere gidin.
- 5. Ilk cmle ikincisiyle ayni olana kadar adim 3 ve 4' tekrar edin.
+ 5. lk cmle ikincisiyle ayn olana kadar adm 3 ve 4' tekrar edin.
----> Bu sutar degistir komutu ile degisneli gereken birka mzg ieriyor.
----> Bu satir degistir komutu ile degismesi gereken birka szck ieriyor.
+---> Bu sutar deitir komutu ile deineli gereken birka mzg ieriyor.
+---> Bu satr deitir komutu ile deimesi gereken birka szck ieriyor.
- ce'nin sadece szcg degistirmedigini, ayni zamanda sizi INSERT kipine
- aldigina da dikkat edin.
+ ce'nin sadece szc deitirmediini, ayn zamanda sizi INSERT kipine
+ aldna da dikkat edin.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 3.4: c'YI KULLANARAK DAHA FAZLA DEGISTIRME
+ Ders 3.4: c'Y KULLANARAK DAHA FAZLA DETRME
- ** Degistir isletmeni sil komutu ile ayni hareketlerle kullanilir. **
+ ** Deitir iletmeni sil komutu ile ayn hareketlerle kullanlr. **
- 1. Degistir isletmeni sil ile ayni yolla alisir. Biim syledir:
+ 1. Deitir iletmeni sil ile ayn yolla alr. Biim yledir:
- c [sayi] hareket
+ c [say] hareket
- 2. Hareketler de aynidir. rnegin w (szck), $ (satir sonu) gibi.
+ 2. Hareketler de ayndr. rnein w (szck), $ (satr sonu) gibi.
- 3. Imleci asagida ---> ile imlenmis ILK satira gtrn.
+ 3. mleci aada ---> ile imlenmi LK satra gtrn.
- 4. Imleci ilk hataya gtrn.
+ 4. mleci ilk hataya gtrn.
- 5. Satirin geri kalan kismini ikincisi gibi yapmak iin c$ yazin ve daha
- sonra <ESC> dgmesine basin.
+ 5. Satrn geri kalan ksmn ikincisi gibi yapmak iin c$ yazn ve daha
+ sonra <ESC> dmesine basn.
----> Bu satirin sonu dzeltilmek iin biraz yardima ihtiya duyuyor.
----> Bu satirin sonu dzeltilmek iin c$ komutu kullanilarak yardima ihtiya
+---> Bu satrn sonu dzeltilmek iin biraz yardma ihtiya duyuyor.
+---> Bu satrn sonu dzeltilmek iin c$ komutu kullanlarak yardma ihtiya
duyuyor.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 3: ZET
+ Ders 3: ZET
- 1. Silinmis olan bir metni geri yerlestirmek iin p yazin. Bu silinmis
- metni imleten hemen SONRA geri yerlestirir (eger bir satir silinmisse
- hemen imlecin altindaki satira yerlestirilecektir).
+ 1. Silinmi olan bir metni geri yerletirmek iin p yazn. Bu silinmi
+ metni imleten hemen SONRA geri yerletirir (eer bir satr silinmise
+ hemen imlecin altndaki satra yerletirilecektir).
- 2. Imlecin altindaki karakteri degistirmek iin nce r ardindan da
- yazmak istediginiz karakteri yazin.
+ 2. mlecin altndaki karakteri deitirmek iin nce r ardndan da
+ yazmak istediiniz karakteri yazn.
- 3. Degistir isletmeni belirlenen nesneyi, imleten hareketin sonuna kadar
- degistirme imkani verir. rnegin, bir szcg imleten szck sonuna
- kadar degistirmek iin cw, bir satirin tamamini degistirmek iinse c$
- yazin.
+ 3. Deitir iletmeni belirlenen nesneyi, imleten hareketin sonuna kadar
+ deitirme imkan verir. rnein, bir szc imleten szck sonuna
+ kadar deitirmek iin cw, bir satrn tamamn deitirmek iinse c$
+ yazn.
- 4. Degistir iin biim syledir:
+ 4. Deitir iin biim yledir:
- c [sayi] hareket
+ c [say] hareket
- Simdi bir sonraki derse gein.
+ imdi bir sonraki derse gein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 4.1: IMLE KONUMU VE DOSYA DURUMU
+ Ders 4.1: MLE KONUMU VE DOSYA DURUMU
** <CTRL> G dosya ierisindeki konumunuzu ve dosya durumunu gsterir. Dosya
- ierisindeki bir satira gitmek iin G yazin. **
+ ierisindeki bir satra gitmek iin G yazn. **
- NOT: Adimlardan herhangi birini yapmadan nce dersin tamamini okuyun!
+ NOT: Admlardan herhangi birini yapmadan nce dersin tamamn okuyun!
- 1. <CTRL> dgmesini basili tutun ve g'ye basin. Biz buna <CTRL> G diyoruz.
- Dosyanin sonunda dosya adini ve bulundugunuz konumu gsteren bir durum
- satiri grnecektir. Adim 3 iin satir numarasini unutmayin.
+ 1. <CTRL> dmesini basl tutun ve g'ye basn. Biz buna <CTRL> G diyoruz.
+ Dosyann sonunda dosya adn ve bulunduunuz konumu gsteren bir durum
+ satr grnecektir. Adm 3 iin satr numarasn unutmayn.
- NOT: Imle konumunu ekranin sag alt ksesinde grebilirsiniz. Bu 'ruler'
- seenegi etkin oldugunda grlr (bilgi iin :help 'ruler' yazin).
+ NOT: mle konumunu ekrann sa alt kesinde grebilirsiniz. Bu 'ruler'
+ seenei etkin olduunda grlr (bilgi iin :help 'ruler' yazn).
- 2. Dosyanin sonuna gitmek iin G'ye basin. Dosyanin basina gitmek iin
- gg komutunu kullanin.
+ 2. Dosyann sonuna gitmek iin G'ye basn. Dosyann bana gitmek iin
+ gg komutunu kullann.
- 3. Daha nce bulundugunuz satir numarasini yazin ve daha sonra G'ye
- basin. Bu sizi ilk <CTRL> g'ye bastiginiz satira geri gtrecektir.
+ 3. Daha nce bulunduunuz satr numarasn yazn ve daha sonra G'ye
+ basn. Bu sizi ilk <CTRL> g'ye bastnz satra geri gtrecektir.
- 4. Yapabileceginizi dsndgnzde, adim 1'den 3'e kadar yapin.
+ 4. Yapabileceinizi dndnzde, adm 1'den 3'e kadar yapn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 4.2: ARAMA KOMUTU
+ Ders 4.2: ARAMA KOMUTU
- ** Bir szck begini aramak iin / ve aranacak begi girin. **
+ ** Bir szck beini aramak iin / ve aranacak bei girin. **
- 1. Normal kipteyken / yazin. / karakterinin ve imlecin ekranin sonunda
- grndgne dikkat edin.
+ 1. Normal kipteyken / yazn. / karakterinin ve imlecin ekrann sonunda
+ grndne dikkat edin.
- 2. 'hatttaa' yazip <ENTER>'a basin. Bu sizin aramak istediginiz szcktr.
+ 2. 'hatttaa' yazp <ENTER>'a basn. Bu sizin aramak istediiniz szcktr.
- 3. Ayni szck begini tekrar aramak iin n yazin.
- Ayni szck begini zit ynde aramak iin N yazin.
+ 3. Ayn szck beini tekrar aramak iin n yazn.
+ Ayn szck beini zt ynde aramak iin N yazn.
- 4. Eger zit yne dogru bir arama yapmak istiyorsaniz / komutu yerine ?
- komutunu kullanin.
+ 4. Eer zt yne doru bir arama yapmak istiyorsanz / komutu yerine ?
+ komutunu kullann.
----> "hatttaa" hatayi yazmanin dogru yolu degil; hatttaa bir hata.
+---> "hatttaa" hatay yazmann doru yolu deil; hatttaa bir hata.
-Not: Arama dosyanin sonuna ulastiginda dosyanin basindan srecektir. Bunu devre
- disi birakmak iin 'wrapscan' seenegini sifirlayin.
+Not: Arama dosyann sonuna ulatnda dosyann bandan srecektir. Bunu devre
+ d brakmak iin 'wrapscan' seeneini sfrlayn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 4.3: UYAN AYRALAR ARAMASI
+ Ders 4.3: UYAN AYRALAR ARAMASI
- ** Uyan bir (, [ veya { bulmak iin % yazin. **
+ ** Uyan bir (, [ veya { bulmak iin % yazn. **
- 1. Imleci asagida ---> ile imlenmis satirda bir (, [ veya { imine gtrn.
+ 1. mleci aada ---> ile imlenmi satrda bir (, [ veya { imine gtrn.
- 2. Simdi % karakterini yazin.
+ 2. imdi % karakterini yazn.
- 3. Imle uyan ayracin zerine gider.
+ 3. mle uyan ayracn zerine gider.
- 4. Uyan ilk parantezin zerine geri dnmek iin yine % yazin.
+ 4. Uyan ilk parantezin zerine geri dnmek iin yine % yazn.
- 5. Imleci baska bir (), [] veya {} zerine gtrn ve % isletmeninin neler
- yaptigini gzlemleyin.
+ 5. mleci baka bir (), [] veya {} zerine gtrn ve % iletmeninin neler
+ yaptn gzlemleyin.
----> Bu ierisinde ( )'ler, ['ler ] ve {'ler } bulunan bir satirdir.
+---> Bu ierisinde ( )'ler, ['ler ] ve {'ler } bulunan bir satrdr.
- NOT: Bu ierisinde esi olmayan ayralar bulunan bir programin hatalarini
- ayiklamak iin son derece yararlidir.
+ NOT: Bu ierisinde ei olmayan ayralar bulunan bir programn hatalarn
+ ayklamak iin son derece yararldr.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 4.4: BUL/DEGISTIR KOMUTU
+ Ders 4.4: BUL/DETR KOMUTU
- ** 'eski' yerine 'yeni' yerlestirmek iin :s/eski/yeni/g yazin. **
+ ** 'eski' yerine 'yeni' yerletirmek iin :s/eski/yeni/g yazn. **
- 1. Imleci asagida ---> ile imlenmis satira gtrn.
+ 1. mleci aada ---> ile imlenmi satra gtrn.
- 2. :s/buu/bu yazip <ENTER>'a basin. Bu komutun sadece satirdaki ilk
- uyan karsilasmayi dzelttigine dikkat edin.
+ 2. :s/buu/bu yazp <ENTER>'a basn. Bu komutun sadece satrdaki ilk
+ uyan karlamay dzelttiine dikkat edin.
- 3. Simdi satirdaki tm degisiklikleri bir anda yapmak iin :s/buu/bu/g
- yazarak tm "buu" olusumlarini degistirin.
+ 3. imdi satrdaki tm deiiklikleri bir anda yapmak iin :s/buu/bu/g
+ yazarak tm "buu" oluumlarn deitirin.
---> Buu birinci, buu ikinci, buu nc blm.
- 4. Iki satir arasindaki tm karakter katari olusumlarini degistirmek iin:
+ 4. ki satr arasndaki tm karakter katar oluumlarn deitirmek iin:
- :#,#s/eski/yeni/g yazin. #,# burada degisikligin yapilacagi araligin
- satir numaralaridir.
- :%s/eski/yeni/g yazin. Bu tm dosyadaki her olusumu degistirir.
- :%s/eski/yeni/gc yazin. Bu tm dosyadaki her olusumu degistirir ancak
- her birini degistirmeden nce bize sorar.
+ :#,#s/eski/yeni/g yazn. #,# burada deiikliin yaplaca araln
+ satr numaralardr.
+ :%s/eski/yeni/g yazn. Bu tm dosyadaki her oluumu deitirir.
+ :%s/eski/yeni/gc yazn. Bu tm dosyadaki her oluumu deitirir ancak
+ her birini deitirmeden nce bize sorar.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 4: ZET
+ Ders 4: ZET
1. <CTRL> G sizin dosyadaki konumunuzu ve dosya durumunu gsterir.
- G dosyanin sonuna gider.
- [sayi] G belirtilen satir numarasina gider.
- gg ilk satira gider.
-
- 2. Bir szck beginden nce / yazmak, ILERI ynde o begi aratir.
- Bir szck beginden nce ? yazmak, GERI ynde o begi aratir.
- Bir aramadan sonra, ayni yndeki bir sonraki karsilasmayi bulmak iin n,
- veya zit yndekini bulmak iin N yazin.
+ G dosyann sonuna gider.
+ [say] G belirtilen satr numarasna gider.
+ gg ilk satra gider.
+
+ 2. Bir szck beinden nce / yazmak, LER ynde o bei aratr.
+ Bir szck beinden nce ? yazmak, GER ynde o bei aratr.
+ Bir aramadan sonra, ayn yndeki bir sonraki karlamay bulmak iin n,
+ veya zt yndekini bulmak iin N yazn.
<CTRL> O sizi eski konumlara, <CTRL> I daha yeni konumlara gtrr.
- 3. Imle bir (), [], {} ayraci zerindeyken % yazmak, uyan diger es
- ayraci bulur.
+ 3. mle bir (), [], {} ayrac zerindeyken % yazmak, uyan dier e
+ ayrac bulur.
- 4. Bir satirdaki ilk 'eski'yi 'yeni' ile degistirmek iin :s/eski/yeni,
- Bir satirdaki tm 'eski'leri 'yeni' ile degistirmek iin :s/eski/yeni/g,
- Iki satir arasindaki bekleri degistirmek iin :#,#s/eski/yeni/g,
- Bir dosyadaki tm karsilasmalari degistirmek iin :%s/eski/yeni/g yazin.
- Her seferinde onay sormasi iin :%s/eski/yeni/gc kullanin.
+ 4. Bir satrdaki ilk 'eski'yi 'yeni' ile deitirmek iin :s/eski/yeni,
+ Bir satrdaki tm 'eski'leri 'yeni' ile deitirmek iin :s/eski/yeni/g,
+ ki satr arasndaki bekleri deitirmek iin :#,#s/eski/yeni/g,
+ Bir dosyadaki tm karlamalar deitirmek iin :%s/eski/yeni/g yazn.
+ Her seferinde onay sormas iin :%s/eski/yeni/gc kullann.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 5.1: BIR DIS KOMUT ALISTIRMAK
+ Ders 5.1: BIR DI KOMUT ALITIRMAK
- ** Bir dis komutu alistirmak iin :! ve ardindan dis komutu yazin. **
+ ** Bir d komutu altrmak iin :! ve ardndan d komutu yazn. **
- 1. Imleci ekranin altina gtrmek iin : komutunu yazin. Bu size bir komut
- yazma imkani verir.
+ 1. mleci ekrann altna gtrmek iin : komutunu yazn. Bu size bir komut
+ yazma imkan verir.
- 2. Simdi ! (nlem) karakterini yazin. Bu size bir dis komut alistirma
- olanagi verir.
+ 2. imdi ! (nlem) karakterini yazn. Bu size bir d komut altrma
+ olana verir.
- 3. rnek olarak ! karakterini takiben ls yazin ve <ENTER>'a basin. Bu size
- o anda bulundugunuz dizindeki dosyalari gsterecektir. Veya ls
- alismazsa :!dir komutunu kullanin.
+ 3. rnek olarak ! karakterini takiben ls yazn ve <ENTER>'a basn. Bu size
+ o anda bulunduunuz dizindeki dosyalar gsterecektir. Veya ls
+ almazsa :!dir komutunu kullann.
- NOT: Herhangi bir dis komutu bu yolla alistirmak mmkndr.
+ NOT: Herhangi bir d komutu bu yolla altrmak mmkndr.
- NOT: Tm : komutlarindan sonra <ENTER> dgmesine basilmalidir. Bundan sonra
- bunu her zaman animsatmayacagiz.
+ NOT: Tm : komutlarndan sonra <ENTER> dmesine baslmaldr. Bundan sonra
+ bunu her zaman anmsatmayacaz.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 5.2: DOSYA YAZMAYA DEVAM
+ Ders 5.2: DOSYA YAZMAYA DEVAM
- ** Dosyaya yapilan degisikligi kaydetmek iin :w DOSYA_ADI yazin. **
+ ** Dosyaya yaplan deiiklii kaydetmek iin :w DOSYA_ADI yazn. **
- 1. Bulundugunuz dizini listelemek iin :!dir veya :!ls yazin.
- Komuttan sonra <ENTER> dgmesine basacaginizi zaten biliyorsunuz.
+ 1. Bulunduunuz dizini listelemek iin :!dir veya :!ls yazn.
+ Komuttan sonra <ENTER> dmesine basacanz zaten biliyorsunuz.
- 2. Mevcut olmayan bir dosya adi sein, rnegin DENEME.
+ 2. Mevcut olmayan bir dosya ad sein, rnein DENEME.
- 3. Simdi :w DENEME yazin (DENEME sizin setiginiz dosya adidir).
+ 3. imdi :w DENEME yazn (DENEME sizin setiiniz dosya addr).
- 4. Bu tm dosyayi (Vim Tutor) DENEME isminde baska bir dosyaya yazar.
- Bunu dogrulamak iin, :!ls veya :!dir yazin ve yeniden bulundugunuz
+ 4. Bu tm dosyay (Vim Tutor) DENEME isminde baka bir dosyaya yazar.
+ Bunu dorulamak iin, :!ls veya :!dir yazn ve yeniden bulunduunuz
dizini listeleyin.
- NOT: Eger Vim'den ikip kaydettiginiz DENEME dosyasini aarsaniz, bunun
- kaydettiginiz vimtutor'un gerek bir kopyasi oldugunu grrsnz.
+ NOT: Eer Vim'den kp kaydettiiniz DENEME dosyasn aarsanz, bunun
+ kaydettiiniz vimtutor'un gerek bir kopyas olduunu grrsnz.
- 5. Simdi dosyayi su komutlari vererek silin:
- Windows: :!del DENEME
- Unix (macOS, Linux, Haiku): :!rm DENEME
+ 5. imdi dosyay u komutlar vererek silin:
+ Windows: :!del DENEME
+ Unix (macOS, Linux, Haiku): :!rm DENEME
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 5.3: YAZMAK IIN METIN SEME
+ Ders 5.3: YAZMAK N METN SEME
- ** Dosyanin bir blmn kaydetmek iin, v hareket :w DOSYA_ADI yazin. **
+ ** Dosyann bir blmn kaydetmek iin, v hareket :w DOSYA_ADI yazn. **
- 1. Imleci bu satirin zerine getirin.
+ 1. mleci bu satrn zerine getirin.
- 2. v dgmesine basarak imleci asagidaki besinci adima tasiyin. Metnin
- seildigine dikkat edin.
+ 2. v dmesine basarak imleci aadaki beinci adma tayn. Metnin
+ seildiine dikkat edin.
- 3. : karakterini yazin. Ekranin alt kisminda :'<'> ikacaktir.
+ 3. : karakterini yazn. Ekrann alt ksmnda :'<'> kacaktr.
- 4. w DENEME yazin; DENEME burada henz var olmayan bir dosyadir. <ENTER>
- dgmesine basmadan nce :'<'>w DENEME grdgnzden emin olun.
+ 4. w DENEME yazn; DENEME burada henz var olmayan bir dosyadr. <ENTER>
+ dmesine basmadan nce :'<'>w DENEME grdnzden emin olun.
- 5. Vim seilen satirlari DENEME dosyasina yazacaktir. :!ls veya :!dir ile
- bakarak dosyayi grn. Henz silmeyin; bir sonraki derste kullanacagiz.
+ 5. Vim seilen satrlar DENEME dosyasna yazacaktr. :!ls veya :!dir ile
+ bakarak dosyay grn. Henz silmeyin; bir sonraki derste kullanacaz.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 5.4: DOSYALARI BIRLESTIRME VE BLM EKLEME
+ Ders 5.4: DOSYALARI BRLETRME VE BLM EKLEME
- ** Bir dosyanin ierigini eklemek iin :r DOSYA_ADI yazin. **
+ ** Bir dosyann ieriini eklemek iin :r DOSYA_ADI yazn. **
- 1. Imleci bu satirin hemen bir stne koyun.
+ 1. mleci bu satrn hemen bir stne koyun.
- NOT: Ikinci adimi gereklestirdikten sonra Ders 5.3'n metnini greceksiniz.
- Sonrasinda ASAGI dgmesi ile bu derse geri gelin.
+ NOT: kinci adm gerekletirdikten sonra Ders 5.3'n metnini greceksiniz.
+ Sonrasnda AAI dmesi ile bu derse geri gelin.
- 2. Simdi :r DENEME komutunu kullanarak DENEME dosyasini bu dosyanin iine
- getirin. Getirdiginiz dosya imlecin hemen altina yerlestirilir.
+ 2. imdi :r DENEME komutunu kullanarak DENEME dosyasn bu dosyann iine
+ getirin. Getirdiiniz dosya imlecin hemen altna yerletirilir.
- 3. Dosyanin getirildigini dogrulamak iin YUKARI dgmesini kullanarak
- Ders 5.3'n iki adet kopyasi oldugunu grn, zgn srm ve kopyasi.
+ 3. Dosyann getirildiini dorulamak iin YUKARI dmesini kullanarak
+ Ders 5.3'n iki adet kopyas olduunu grn, zgn srm ve kopyas.
- NOT: Bu komutu kullanarak bir dis komutun iktisini da dosyanin iine
- koyabilirsiniz. rnegin :r :!ls yazmak ls komutunun verecegi iktiyi
- dosyanin iinde hemen imlecin altindaki satira koyar.
+ NOT: Bu komutu kullanarak bir d komutun ktsn da dosyann iine
+ koyabilirsiniz. rnein :r :!ls yazmak ls komutunun verecei kty
+ dosyann iinde hemen imlecin altndaki satra koyar.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 5: ZET
+ Ders 5: ZET
- 1. :!komut bir dis komut alistirir.
- Bazi yararli rnekler:
- (MS-DOS) (Unix)
- :!dir :!ls - bir dizini listeler.
- :!del DOSYA :!rm DOSYA - DOSYA'yi siler.
+ 1. :!komut bir d komut altrr.
+ Baz yararl rnekler:
+ (MS-DOS) (Unix)
+ :!dir :!ls - bir dizini listeler.
+ :!del DOSYA :!rm DOSYA - DOSYA'y siler.
- 2. :w DOSYA_ADI o anki Vim dosyasini diske DOSYA_ADI ile kaydeder.
+ 2. :w DOSYA_ADI o anki Vim dosyasn diske DOSYA_ADI ile kaydeder.
- 3. v hareket :w DOSYA_ADI seilmis satir araligini DOSYA_ADI ile kaydeder.
+ 3. v hareket :w DOSYA_ADI seilmi satr araln DOSYA_ADI ile kaydeder.
- 4. :r DOSYA_ADI imlecin altindan baslayarak DOSYA_ADI isimli dosyanin
- ierigini ekler.
+ 4. :r DOSYA_ADI imlecin altndan balayarak DOSYA_ADI isimli dosyann
+ ieriini ekler.
- 5. :r !dir veya !ls bu iki komutun (dosyalari listeleme) ieriklerini
- okur ve dosyanin iine yerlestirir.
+ 5. :r !dir veya !ls bu iki komutun (dosyalar listeleme) ieriklerini
+ okur ve dosyann iine yerletirir.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 6.1: A KOMUTU
+ Ders 6.1: A KOMUTU
- ** Imlecin asagisina bir satir amak ve INSERT kipine gemek iin o yazin. **
+ ** mlecin aasna bir satr amak ve INSERT kipine gemek iin o yazn. **
- 1. Imleci asagida ---> ile imlenmis satira gtrn.
+ 1. mleci aada ---> ile imlenmi satra gtrn.
- 2. Imlecin asagisina bir satir amak ve INSERT kipine gemek iin o
- (kk harfle) yazin.
+ 2. mlecin aasna bir satr amak ve INSERT kipine gemek iin o
+ (kk harfle) yazn.
- 3. Simdi herhangi bir metin girin ve INSERT kipinden ikmak iin <ESC>
- dgmesine basin.
+ 3. imdi herhangi bir metin girin ve INSERT kipinden kmak iin <ESC>
+ dmesine basn.
----> o yazdiktan sonra imle INSERT kipinde ailan satirin zerine gider.
+---> o yazdktan sonra imle INSERT kipinde alan satrn zerine gider.
- 4. Imlecin zerinde bir satir amak iin, yalnizca byk O yazin. Bunu
- asagidaki satirda deneyin.
+ 4. mlecin zerinde bir satr amak iin, yalnzca byk O yazn. Bunu
+ aadaki satrda deneyin.
----> Bu satirin zerine bir satir amak iin imle bu satirdayken O yazin.
+---> Bu satrn zerine bir satr amak iin imle bu satrdayken O yazn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 6.2: EKLE KOMUTU
+ Ders 6.2: EKLE KOMUTU
- ** Imleten sonra metin eklemek iin a yazin. **
+ ** mleten sonra metin eklemek iin a yazn. **
- 1. Imleci asagida ---> ile imlenmis satira gtrn.
+ 1. mleci aada ---> ile imlenmi satra gtrn.
- 2. Imle sati'nin sonuna gelinceye dek e dgmesine basin.
+ 2. mle sat'nn sonuna gelinceye dek e dmesine basn.
- 3. Imleten SONRA metin eklemek iin a yazin.
+ 3. mleten SONRA metin eklemek iin a yazn.
- 4. Simdi ilk satiri ikincisi gibi tamamlayin. INSERT kipinden ikmak iin
- <ESC> dgmesine basin.
+ 4. imdi ilk satr ikincisi gibi tamamlayn. INSERT kipinden kmak iin
+ <ESC> dmesine basn.
- 5. e dgmesini kullanarak bir sonraki yarim szcge gidin ve adim 3 ve 4'
- tekrarlayin.
+ 5. e dmesini kullanarak bir sonraki yarm szce gidin ve adm 3 ve 4'
+ tekrarlayn.
----> Bu sati alisabilirsiniz. ali met ekl
----> Bu satirda alisabilirsiniz. alisirken metin eklemeyi kullanin.
+---> Bu sat alabilirsiniz. al met ekl
+---> Bu satrda alabilirsiniz. alrken metin eklemeyi kullann.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 6.3: BIR BASKA DEGISTIR KOMUTU
+ Ders 6.3: BR BAKA DETR KOMUTU
- ** Birden fazla karakter degistirmek iin byk R yazin. **
+ ** Birden fazla karakter deitirmek iin byk R yazn. **
- 1. Imleci asagida ---> ile imlenmis ILK satira gtrn. Imleci ilk xxx'in
- basina getirin.
+ 1. mleci aada ---> ile imlenmi LK satra gtrn. mleci ilk xxx'in
+ bana getirin.
- 2. Simdi R dgmesine basin ve ikinci satirdaki sayiyi ilk satirdaki xxx'in
- yerine yazin.
+ 2. imdi R dmesine basn ve ikinci satrdaki sayy ilk satrdaki xxx'in
+ yerine yazn.
- 3. <ESC> dgmesine basarak REPLACE kipinden ikin. Satirin geri kalaninin
- degismedigini gzlemleyin.
+ 3. <ESC> dmesine basarak REPLACE kipinden kn. Satrn geri kalannn
+ deimediini gzlemleyin.
- 4. Kalan xxx'i de degistirmek iin adimlari tekrarlayin.
+ 4. Kalan xxx'i de deitirmek iin admlar tekrarlayn.
----> 123 sayisina xxx eklemek size yyy toplamini verir.
----> 123 sayisina 456 eklemek size 579 toplamini verir.
+---> 123 saysna xxx eklemek size yyy toplamn verir.
+---> 123 saysna 456 eklemek size 579 toplamn verir.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 6.4: METIN KOPYALA VE YAPISTIR
+ Ders 6.4: METN KOPYALA VE YAPITIR
- ** y isletmenini kullanarak metin kopyalayin ve p kullanarak yapistirin. **
+ ** y iletmenini kullanarak metin kopyalayn ve p kullanarak yaptrn. **
- 1. Imleci asagida ---> ile imlenmis satira getirin ve "a)"nin ardina koyun.
+ 1. mleci aada ---> ile imlenmi satra getirin ve "a)"nn ardna koyun.
- 2. v ile VISUAL kipine gein ve imleci "ilk" szcgnn ncesine getirin.
+ 2. v ile VISUAL kipine gein ve imleci "ilk" szcnn ncesine getirin.
- 3. y dgmesine basarak seili metni kopyalayin.
+ 3. y dmesine basarak seili metni kopyalayn.
- 4. Imleci bir sonraki satirin sonuna j$ ile getirin.
+ 4. mleci bir sonraki satrn sonuna j$ ile getirin.
- 5. p dgmesine basarak metni yapistirin. Akabinde <ESC> dgmesine basin.
+ 5. p dmesine basarak metni yaptrn. Akabinde <ESC> dmesine basn.
- 6. VISUAL kipine geerek "ge" szcgn sein, y ile kopyalayin, j$ ile
- ikinci satirin sonuna gidin ve p ile szcg yapistirin.
+ 6. VISUAL kipine geerek "ge" szcn sein, y ile kopyalayn, j$ ile
+ ikinci satrn sonuna gidin ve p ile szc yaptrn.
---> a) Bu ilk ge
---> b)
- NOT: y komutunu bir isletmen olarak da kullanabilirsiniz; yw komutu yalnizca
- bir szcg kopyalar.
+ NOT: y komutunu bir iletmen olarak da kullanabilirsiniz; yw komutu yalnzca
+ bir szc kopyalar.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 6.4: SET KOMUTU
+ Ders 6.4: SET KOMUTU
- ** Arama veya degistirme islemlerinin byk/kk harf durumunu grmezden
- gelmesi iin SET komutunu kullanin.
+ ** Arama veya deitirme ilemlerinin byk/kk harf durumunu grmezden
+ gelmesi iin SET komutunu kullann.
- 1. 'yoksay' szcgn aramak iin /ignore yazin. Bunu n dgmesine basarak
+ 1. 'yoksay' szcn aramak iin /ignore yazn. Bunu n dmesine basarak
birka kez yenileyin.
- 2. :set ic yazarak 'ic' (BYK/kk harf yoksay) ayarini sein.
+ 2. :set ic yazarak 'ic' (BYK/kk harf yoksay) ayarn sein.
- 3. Yeniden n dgmesine basarak 'yoksay' szcgn aramayi srdrn. Artik
- YOKSAY ve yoksay rneklerinin de bulundugunu gzlemleyin.
+ 3. Yeniden n dmesine basarak 'yoksay' szcn aramay srdrn. Artk
+ YOKSAY ve yoksay rneklerinin de bulunduunu gzlemleyin.
- 4. :set hls is yazarak 'hlsearch' ve 'incsearch' ayarlarini sein.
+ 4. :set hls is yazarak 'hlsearch' ve 'incsearch' ayarlarn sein.
- 5. /ignore yazarak arama komutunu tekrar verin ve ne olacagini grn.
+ 5. /ignore yazarak arama komutunu tekrar verin ve ne olacan grn.
- 6. BYK/kk harf ayrimsiz arama ayarini kapatmak iin :set noic yazin.
+ 6. BYK/kk harf ayrmsz arama ayarn kapatmak iin :set noic yazn.
- NOT: Sonularin ekranda vurgulanmasini istemiyorsaniz :nohlsearch yazin.
- NOT: Eger yalnizca bir arama islemi iin BYK/kk harf ayrimsiz arama
- yapmak istiyorsaniz /ignore\c komutunu kullanin.
+ NOT: Sonularn ekranda vurgulanmasn istemiyorsanz :nohlsearch yazn.
+ NOT: Eer yalnzca bir arama ilemi iin BYK/kk harf ayrmsz arama
+ yapmak istiyorsanz /ignore\c komutunu kullann.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- DERS 6 ZET
+ DERS 6 ZET
- 1. o komutu imlecin altinda bir satir aar ve imleci bu ailmis satira
- INSERT kipinde yerlestirir.
- O komutu imlecin zerinde bir satir aar.
+ 1. o komutu imlecin altnda bir satr aar ve imleci bu alm satra
+ INSERT kipinde yerletirir.
+ O komutu imlecin zerinde bir satr aar.
- 2. a komutu imleten sonra metin girisine olanak verir.
- A komutu geerli satirin sonuna giderek metin girisine olanak verir.
+ 2. a komutu imleten sonra metin giriine olanak verir.
+ A komutu geerli satrn sonuna giderek metin giriine olanak verir.
- 3. e komutu imleci bir szcgn sonuna tasir.
+ 3. e komutu imleci bir szcn sonuna tar.
- 4. y isletmeni metni kopyalar, p isletmeni yapistirir.
+ 4. y iletmeni metni kopyalar, p iletmeni yaptrr.
- 5. R komutu REPLACE (DEGISTIR) kipine girer ve <ESC>'ye basilana kadar kalir.
+ 5. R komutu REPLACE (DETR) kipine girer ve <ESC>'ye baslana kadar kalr.
- 6. ":set xxx" yazmak "xxx" seenegini ayarlar. Bazi seenekler:
- 'ic' 'ignorecase' BYK/kk harf ayrimini arama yaparken kapatir.
- 'is' 'incsearch' Bir arama metninin tm uyan kisimlarini gsterir.
- 'hls' 'hlsearch' Uyan sonularin zerini vurgular.
- Ayarlama yaparken ister kisa ister uzun srmleri kullanabilirsiniz.
+ 6. ":set xxx" yazmak "xxx" seeneini ayarlar. Baz seenekler:
+ 'ic' 'ignorecase' BYK/kk harf ayrmn arama yaparken kapatr.
+ 'is' 'incsearch' Bir arama metninin tm uyan ksmlarn gsterir.
+ 'hls' 'hlsearch' Uyan sonularn zerini vurgular.
+ Ayarlama yaparken ister ksa ister uzun srmleri kullanabilirsiniz.
- 7. Bir ayari kapatmak iin "no" ekleyin, rnegin :set noic.
+ 7. Bir ayar kapatmak iin "no" ekleyin, rnein :set noic.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 7.1: YARDIM KAYNAKLARI
+ Ders 7.1: YARDIM KAYNAKLARI
- ** evrimii yardim sistemini kullanin **
+ ** evrimii yardm sistemini kullann **
- Vim genis bir eirimii yardim sistemine sahiptir. Baslamak iin su n
+ Vim geni bir eirimii yardm sistemine sahiptir. Balamak iin u n
deneyebilirsiniz:
- - (eger varsa) <HELP> dgmesine basin
- - (eger varsa) <F1> dgmesine basin
- - :help yazin ve <ENTER> dgmesine basin
+ - (eer varsa) <HELP> dmesine basn
+ - (eer varsa) <F1> dmesine basn
+ - :help yazn ve <ENTER> dmesine basn
- Yardim penceresindeki metinleri okuyarak yardim sisteminin nasil alistigini
- grenin.
- Bir pencereden digerine gemek iin <CTRL> W ikilisini kullanin.
- Yardim penceresini kapatmak iin :q yazip <ENTER> dgmesine basin.
+ Yardm penceresindeki metinleri okuyarak yardm sisteminin nasl altn
+ renin.
+ Bir pencereden dierine gemek iin <CTRL> W ikilisini kullann.
+ Yardm penceresini kapatmak iin :q yazp <ENTER> dmesine basn.
- ":help" komutuna degisken (argman) vererek herhangi bir konu hakkinda
- yardim alabilirsini. Sunlari deneyin (<ENTER> dgmesine basmayi unutmayin):
+ ":help" komutuna deiken (argman) vererek herhangi bir konu hakknda
+ yardm alabilirsini. unlar deneyin (<ENTER> dmesine basmay unutmayn):
:help w
:help c_<CTRL> D
@@ -866,103 +866,103 @@ Not: Arama dosyanin sonuna ulastiginda dosyanin basindan srecektir. Bunu devre
:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 7.2: BIR BASLANGI BETIGI OLUSTURUN
+ Ders 7.2: BR BALANGI BET OLUTURUN
- ** Vim'in zelliklerine bakin **
+ ** Vim'in zelliklerine bakn **
- Vim Vi'dan ok daha fazla zellige sahiptir fakat birogu ntanimli olarak
- kapalidir. Daha fazla zellik kullanabilmek iin bir "vimrc" dosyasi
- olusturmalisiniz.
+ Vim Vi'dan ok daha fazla zellie sahiptir fakat birou ntanml olarak
+ kapaldr. Daha fazla zellik kullanabilmek iin bir "vimrc" dosyas
+ oluturmalsnz.
- 1. "vimrc" dosyasini dzenlemeye baslayin. Isletim sistemlerine gre:
+ 1. "vimrc" dosyasn dzenlemeye balayn. letim sistemlerine gre:
- :e ~/.vimrc Unix iin
- :e $VIM/_vimrc Windows iin
+ :e ~/.vimrc Unix iin
+ :e $VIM/_vimrc Windows iin
- 2. Simdi rnek "vimrc" dosyasi ierigini okuyun:
+ 2. imdi rnek "vimrc" dosyas ieriini okuyun:
:r $VIMRUNTIME/vimrc_example.vim
- 3. Dosyayi :w ile kaydedin.
+ 3. Dosyay :w ile kaydedin.
- Vim'i bir sonraki alistirilmasinda szdizim vurgulamasi kullanacaktir.
- Tm tercih ettiginiz ayarlari bu "vimrc" dosyasina ekleyebilirsiniz.
- Daha fazla bilgi iin :help vimrc-intro yazin.
+ Vim'i bir sonraki altrlmasnda szdizim vurgulamas kullanacaktr.
+ Tm tercih ettiiniz ayarlar bu "vimrc" dosyasna ekleyebilirsiniz.
+ Daha fazla bilgi iin :help vimrc-intro yazn.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 7.3: TAMAMLAMA
+ Ders 7.3: TAMAMLAMA
- ** <CTRL> D ve <TAB> ile komut istemi ekraninda tamamlama **
+ ** <CTRL> D ve <TAB> ile komut istemi ekrannda tamamlama **
- 1. :set nocp komutunu kullanarak Vim'in uyumlu kipte olmadigindan emin olun.
+ 1. :set nocp komutunu kullanarak Vim'in uyumlu kipte olmadndan emin olun.
- 2. Bulundugunuz dizindeki dosyalara :!ls veya :!dir ile bakin.
+ 2. Bulunduunuz dizindeki dosyalara :!ls veya :!dir ile bakn.
- 3. Bir komutun baslangicini yazin, rnegin :e.
+ 3. Bir komutun balangcn yazn, rnein :e.
- 4. <CTRL> D'ye bastiginizda Vim size e ile baslayan komutlari gsterecektir.
+ 4. <CTRL> D'ye bastnzda Vim size e ile balayan komutlar gsterecektir.
- 5. d <TAB> kullandiginizda Vim komutu kendinden :edit olarak tamamlayacaktir.
+ 5. d <TAB> kullandnzda Vim komutu kendinden :edit olarak tamamlayacaktr.
- 6. Simdi bir bosluk ekleyin ve var olan bir dosyanin bas harflerini yazin.
- rnegin :edit DOS.
+ 6. imdi bir boluk ekleyin ve var olan bir dosyann ba harflerini yazn.
+ rnein :edit DOS.
- 7. <TAB> dgmesine basin. Eger yalnizca bu dosyadan bir tane varsa Vim
- sizin iin dosya adinin geri kalanini tamamlayacaktir.
+ 7. <TAB> dmesine basn. Eer yalnzca bu dosyadan bir tane varsa Vim
+ sizin iin dosya adnn geri kalann tamamlayacaktr.
- NOT: Tamamlama birok komut iin alisir. Yalnizca <CTRL> D ve <TAB>
- ikililerini deneyin. zellikle :help iin ok yararlidir.
+ NOT: Tamamlama birok komut iin alr. Yalnzca <CTRL> D ve <TAB>
+ ikililerini deneyin. zellikle :help iin ok yararldr.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ders 7: ZET
+ Ders 7: ZET
- 1. :help yazmak veya <F1> veya <HELP> dgmelerine basmak yardim
+ 1. :help yazmak veya <F1> veya <HELP> dmelerine basmak yardm
penceresini aar.
- 2. :help cmd yazarak cmd hakkinda bilgi sahibi olabilirsiniz.
+ 2. :help cmd yazarak cmd hakknda bilgi sahibi olabilirsiniz.
- 3. <CTRL> W kullanarak baska pencerelere geebilirsiniz.
+ 3. <CTRL> W kullanarak baka pencerelere geebilirsiniz.
- 4. :q kullanarak yardim penceresini kapatabilirsiniz.
+ 4. :q kullanarak yardm penceresini kapatabilirsiniz.
- 5. Bir vimrc baslangi betigi olusturarak yeglenen ayarlarinizi
+ 5. Bir vimrc balang betii oluturarak yelenen ayarlarnz
saklayabilirsiniz.
- 6. Bir : komutu girerken <CTRL> D'ye basarak olanakli tamamlama
- seeneklerini grebilirsiniz. <TAB>'a basarak tamamlamayi sein.
+ 6. Bir : komutu girerken <CTRL> D'ye basarak olanakl tamamlama
+ seeneklerini grebilirsiniz. <TAB>'a basarak tamamlamay sein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Burada Vim Egitmeni tamamlanmis oldu. Egitmendeki ama Vim dzenleyicisi
- hakkinda kisa bir bilgi vermek ve onu kolayca kullanmanizi saglamakti.
- Vim'in tamamini gretmek ok zordur zira Vim birok komuta sahiptir. Bundan
- sonra ":help user-manual" komutu ile kullanici kilavuzunu okumalisiniz.
+ Burada Vim Eitmeni tamamlanm oldu. Eitmendeki ama Vim dzenleyicisi
+ hakknda ksa bir bilgi vermek ve onu kolayca kullanmanz salamakt.
+ Vim'in tamamn retmek ok zordur zira Vim birok komuta sahiptir. Bundan
+ sonra ":help user-manual" komutu ile kullanc klavuzunu okumalsnz.
- Daha fazla okuma ve alisma iin su kitabi neriyoruz:
+ Daha fazla okuma ve alma iin u kitab neriyoruz:
- Vim - Vi Improved - by Steve Oualline
- Publisher: New Riders
+ Vim - Vi Improved - by Steve Oualline
+ Publisher: New Riders
- Tmyle Vim iin hazirlanmis ilk kitaptir. zellikle ilk kullanicilar iin
+ Tmyle Vim iin hazrlanm ilk kitaptr. zellikle ilk kullanclar iin
ok uygundur.
- Kitapta birok rnek ve resim bulunmaktadir.
+ Kitapta birok rnek ve resim bulunmaktadr.
http://iccf-holland.org/click5.html adresine bakabilirsiniz.
Bu kitap daha eskidir ve Vim'den daha ok Vi iindir ancak tavsiye edilir:
- Learning the Vi Editor - by Linda Lamb
- Publisher: O'Reilly & Associates Inc.
+ Learning the Vi Editor - by Linda Lamb
+ Publisher: O'Reilly & Associates Inc.
- Vi hakkinda bilmek isteyeceginiz neredeyse her seyin bulundugu bir kitap.
- 6. Basim ayni zamanda Vim hakkinda da bilgi iermektedir.
+ Vi hakknda bilmek isteyeceiniz neredeyse her eyin bulunduu bir kitap.
+ 6. Basm ayn zamanda Vim hakknda da bilgi iermektedir.
- Bu egitmen Michael C. Pierce ve Robert K. Ware tarafindan yazildi,
- Charles Smith tarafindan saglanan fikirlerle Colorado School Of Mines,
+ Bu eitmen Michael C. Pierce ve Robert K. Ware tarafndan yazld,
+ Charles Smith tarafndan salanan fikirlerle Colorado School Of Mines,
Colorado State University. E-posta: bware@mines.colorado.edu
- Vim iin degistiren: Bram Moolenaar
+ Vim iin deitiren: Bram Moolenaar
- Trke eviri: Serkan "heartsmagic" alis (2005), adresimeyaz (at) yahoo com
+ Trke eviri: Serkan "heartsmagic" al (2005), adresimeyaz (at) yahoo com
2019 Gncelleme: Emir SARI, emirsari (at) gmail com
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \ No newline at end of file
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/runtime/tutor/tutor.zh.big5 b/runtime/tutor/tutor.zh.big5
index 710926a..3b9753a 100644
--- a/runtime/tutor/tutor.zh.big5
+++ b/runtime/tutor/tutor.zh.big5
@@ -26,7 +26,7 @@
^
k ܡJ h _ACUN|VʡC
< h l > l _kACUN|VkʡC
- j j ݰ_ӫܶH@yݤV¤UbYC
+ j j ݏӫܶH@yݤV¤UbYC
v
1. HNb̹ʥСAܱzıoΪAC
@@ -105,7 +105,7 @@
3. MU i AۿJn奻ršC
- 4. Ҧ奻ץAЫU <ESC> ^`ҦC
+ 4. Ҧ奻mץAЫU <ESC> ^`ҦC
_BJ2ܨBJ4HKץylC
---> There is text misng this .
@@ -128,7 +128,7 @@
<ESC> :q! <^>
- Ϊ̿JHUROOsҦקJ
+ ΎͿJHUROOsҦקJ
<ESC> :wq <^>
@@ -138,7 +138,7 @@
i Jn奻 <ESC>
-SOܡJU <ESC> |az^쥿`ҦΪ̨@ӤΪ̳
+SOܡJU <ESC> |az^쥿`ҦΎͨ@ӤΎͳ
ROC
nFAĤ@즹CUU~ĤGeC
@@ -196,7 +196,7 @@
RRO d 榡pUJ
- [number] d object Ϊ d [number] object
+ [number] d object Ύ d [number] object
NpUJ
number - NRO(iﶵAʬٳ]m 1 )C
@@ -209,7 +209,7 @@
$ - qeзeme楽C
SOܡJ
- _i_̡AЦb`ҦUȫNHӤϥΩROAh
+ _i_͡AЦb`ҦUȫNHӤϥΩROAh
NݨЪʥpWHCҥN@ˡC
@@ -221,7 +221,7 @@
** J dd iHR@ӷeC **
- ų_RWסAVIM ]p̨Mwn²ƾRAȻݭnbP@W
+ ų_RWסAVIM ]pͨMwn²ƾRAȻݭnbP@W
⦸ d NiHRЩҦbFC
1. бNвʨ쥻`UuyqĤGC
@@ -249,14 +249,14 @@
2. J x RĤ@ӤQOdrC
3. MJ u M̫檺(@)ROC
4. onϥ x ץ檺Ҧ~C
- 5. {bJ@Ӥjg U A_Ӧ檺lAC
+ 5. {bJ@Ӥjg U A_Ӧ檺lAC
6. ۦhJ u HM U HΧeROC
7. MhJ CTRL-R (U CTRL 䤣}AۿJ R ) Ao˴N
- iH_ROA]NOMMROC
+ iH枩_ROA]NOMMROC
---> Fiix the errors oon thhis line and reeplace them witth undo.
- 8. odzOD`ΪROCUOĤGpFC
+ 8. oǐmOD`ΪROCUOĤGpFC
@@ -273,7 +273,7 @@
4. b`ҦU@өRO榡OJ
- [number] command object Ϊ command [number] object
+ [number] command object Ύ command [number] object
NOJ
number - NORO檺
command - NnƱAp d NR
@@ -282,7 +282,7 @@
5. MHeާ@AпJJu (pgu)
Mb@椤ҰʡAпJJU (jgU)
- MHeMROA_Heާ@GAпJJCTRL-R
+ MHeMROA_Heާ@GAпJJCTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ĤTĤ@`JmJRO
@@ -334,7 +334,7 @@
ĤTĤT`JRO
- ** nܤ@ӳr/Ϊ̥AпJ cw **
+ ** nܤ@ӳr/ΎͥAпJ cw **
1. бNвʨ쥻`UаO ---> Ĥ@C
@@ -361,7 +361,7 @@
1. Ou@覡RROO@PCާ@榡OJ
- [number] c object Ϊ c [number] object
+ [number] c object Ύ c [number] object
2. HѼƤ]O@˪Ap w Nr/A$N楽C
@@ -393,7 +393,7 @@
4. RO榡OJ
- [number] c object Ϊ c [number] object
+ [number] c object Ύ c [number] object
Uڭ~DzߤU@C
@@ -427,7 +427,7 @@
** J / HΧHrŦiHΥHbe󤤬dӦrŦC**
- 1. b`ҦUJ / ršCzɷ|`NӦrũMг|X{b̹
+ 1. b`ҦUJ / ršCzɷ|`NӦrũMАm|X{b̹
Ao : ROO@˪C
2. ۿJ errroor <^>CerrroorNOznd䪺rŦC
@@ -500,7 +500,7 @@
2. J / MH@ӦrŦOhObeҽs誺ɤVdӦrŦC
Jݸ ? MH@ӦrŦOhObeҽs誺ɤVedӦr
ŦC@d䤧 n hO_W@ROAibP@VWd
- U@ӦrŦҦbFΪ̫ Shift-N VۤϤVdUӦrŦҦbC
+ U@ӦrŦҦbFΎͫ Shift-N VۤϤVdUӦrŦҦbC
3. pGзemOA(B)B[B]B{B}A % iHNвʨt諸
AWC
@@ -523,12 +523,12 @@
2. ۿJPĸ ! oӦršAo˴N\z~ shell ROFC
3. ڭ̥H ls ROҡCJ !ls <^> CөRON|C|Xzeؿ
- eANpPzbRO洣ܲŤUJ ls ROG@ˡCpG !ls S_
+ eANpPzbRO洣ܲŤUJ ls ROG@ˡCpG !ls S
@ΡAziHո :!dir ݬݡC
----> ܡJ Ҧ~ROiHHoؤ覡C
+---> ܡJ Ҧ~ROmiHHoؤ覡C
----> ܡJ Ҧ : ROH <^> iסC
+---> ܡJ Ҧ : ROmH <^> iסC
@@ -539,7 +539,7 @@
** nN󪺧ʫOs󤤡AпJ :w FILENAME **
- 1. J :!dir Ϊ :!ls 򪾷eؿeCzwD̫ٱoV
+ 1. J :!dir Ύ :!ls 򪾷eؿeCzwD̫ٱoV
<^> aC
2. ܤ@ө|sbWAp TEST C
@@ -562,13 +562,13 @@
** nOs󪺳eAпJ :#,# w FILENAME **
- 1. AӰ@ :!dir Ϊ :!ls 򪾷eؿeAMܤ@ӦXA
+ 1. AӰ@ :!dir Ύ :!ls 򪾷eؿeAMܤ@ӦXA
WWAp TEST C
2. ۱Nвʦܥ̳ݡAM CTRL-g Ӧ檺渹COѤF
渹@C
- 3. ۧвʦܥ̩ݡAA@ CTRL-g C]OѤFoӦn@C
+ 3. ۧвʦܥ̩ݡAA@ CTRL-g C]OѤFoӦ渹@C
4. FuOs峹YӳAпJ :#,# w TEST Co̪ #,# NOW
nDzO渹(ݦ渹,ݦ渹)A TEST NOwWC
@@ -700,7 +700,7 @@ Open up a line above this by typing Shift-O while the cursor is on this line.
Ĥĥ|`J]mROﶵ
- ** ]miϬdΪ̴ijpgﶵ **
+ ** ]miϬdΎʹijpgﶵ **
1. nd ignore ib`ҦUJ /ignore Cn_dӵAiH
@@ -772,7 +772,7 @@ Open up a line above this by typing Shift-O while the cursor is on this line.
** ҥvim\ **
- Vim\SʭnvihohAj\ೣSʬٿECFҰʧh
+ Vim\SʭnvihohAj\mSʬٿECFҰʧh
\AzoЫؤ@vimrcC
1. }lsvimrcAoM_zҨϥΪާ@tΡJ
@@ -801,15 +801,15 @@ Open up a line above this by typing Shift-O while the cursor is on this line.
Fi@BѦҩMDzߡAHUoѭȱoˡJ
- Vim - Vi Improved - @̡JSteve Oualline
+ Vim - Vi Improved - @͡JSteve Oualline
XJNew Riders
- oOĤ@vimyC_Ǫ̯SOΡC䤤٥]tjq
+ oOĤ@vimyC_ǎͯSOΡC䤤٥]tjq
MϥܡCԱAгX http://iccf-holland.org/click5.html
HUoѤѤFӥBeDnOviӤOvimAO]ȱoˡJ
- Learning the Vi Editor - @̡JLinda Lamb
+ Learning the Vi Editor - @͡JLinda Lamb
XJO'Reilly & Associates Inc.
oO@ѡAqLzXGFѨvi쪺ƱCѪ
@@ -817,7 +817,7 @@ Open up a line above this by typing Shift-O while the cursor is on this line.
е{OѨӦCalorado School of MineseMichael C. PierceBRobert K.
Ware ҽsgA䤤ӦColorado State UniversityCharles SmithѤF
- ܦhзNCs̳qHa}OJ
+ ܦhзNCsͳqHa}OJ
bware@mines.colorado.edu
@@ -825,9 +825,9 @@ Open up a line above this by typing Shift-O while the cursor is on this line.
- Ķ̪J
+ ĶͪJ
===========
- ²餤е{½ĶĶ̬ <beos@turbolinux.com.cn>A٦
+ ²餤е{½ĶĶͬ <beos@turbolinux.com.cn>A٦
t~@pta}Jlinuxrat@gnuchina.orgC
c餤е{Oq²餤е{½Ķϥ Debian GNU/Linux 嶵ؤp
diff --git a/runtime/tutor/tutor.zh.utf-8 b/runtime/tutor/tutor.zh.utf-8
index cfdeae0..885faf4 100644
--- a/runtime/tutor/tutor.zh.utf-8
+++ b/runtime/tutor/tutor.zh.utf-8
@@ -568,7 +568,7 @@
2. 接著將光標移動至本頁的最頂端,然後按 CTRL-g 找到該行的行號。別忘了
行號哦。
- 3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行好哦。
+ 3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行號哦。
4. 為了只保存文章的某個部分,請輸入 :#,# w TEST 。這裡的 #,# 就是上面
要求您記住的行號(頂端行號,底端行號),而 TEST 就是選定的文件名。
diff --git a/runtime/tutor/tutor.zh_tw.utf-8 b/runtime/tutor/tutor.zh_tw.utf-8
index cfdeae0..885faf4 100644
--- a/runtime/tutor/tutor.zh_tw.utf-8
+++ b/runtime/tutor/tutor.zh_tw.utf-8
@@ -568,7 +568,7 @@
2. 接著將光標移動至本頁的最頂端,然後按 CTRL-g 找到該行的行號。別忘了
行號哦。
- 3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行好哦。
+ 3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行號哦。
4. 為了只保存文章的某個部分,請輸入 :#,# w TEST 。這裡的 #,# 就是上面
要求您記住的行號(頂端行號,底端行號),而 TEST 就是選定的文件名。
diff --git a/runtime/vim.desktop b/runtime/vim.desktop
index 276ddc6..25c4736 100644
--- a/runtime/vim.desktop
+++ b/runtime/vim.desktop
@@ -4,16 +4,19 @@
# Translators: This is the Application Name used in the Vim desktop file
Name[de]=Vim
Name[eo]=Vim
+Name[tr]=Vim
Name=Vim
# Translators: This is the Generic Application Name used in the Vim desktop file
GenericName[de]=Texteditor
GenericName[eo]=Tekstoredaktilo
GenericName[ja]=テキストエディタ
+GenericName[tr]=Metin Düzenleyici
GenericName=Text Editor
# Translators: This is the comment used in the Vim desktop file
Comment[de]=Textdateien bearbeiten
Comment[eo]=Redakti tekstajn dosierojn
Comment[ja]=テキストファイルを編集します
+Comment[tr]=Metin dosyaları düzenle
Comment=Edit text files
# The translations should come from the po file. Leave them here for now, they will
# be overwritten by the po file when generating the desktop.file.
@@ -81,7 +84,6 @@ Comment[sv]=Redigera textfiler
Comment[ta]=உரை கோப்புகளை தொகுக்கவும்
Comment[th]=แก้ไขแฟ้มข้อความ
Comment[tk]=Metin faýllary editle
-Comment[tr]=Metin dosyalarını düzenle
Comment[uk]=Редактор текстових файлів
Comment[vi]=Soạn thảo tập tin văn bản
Comment[wa]=Asspougnî des fitchîs tecses
@@ -95,6 +97,7 @@ Type=Application
Keywords[de]=Text;Editor;
Keywords[eo]=Teksto;redaktilo;
Keywords[ja]=テキスト;エディタ;
+Keywords[tr]=Metin;düzenleyici;
Keywords=Text;editor;
# Translators: This is the Icon file name. Do NOT translate
Icon[de]=gvim
diff --git a/src/INSTALLvms.txt b/src/INSTALLvms.txt
index cbcbc49..7966e6f 100644
--- a/src/INSTALLvms.txt
+++ b/src/INSTALLvms.txt
@@ -240,7 +240,7 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
7.1 General notes
To be able to build external GUI or language support you have to enable
- related feature in MAKE_VMS.MMS file. Usually it need some extra tuning
+ related feature in MAKE_VMS.MMS file. Usually it needs some extra tuning
around include files, shared libraries etc.
Please note, that leading "," are valuable for MMS/MMK syntax.
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 2a0a1a1..1105808 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -1279,6 +1279,17 @@ MAIN_TARGET = $(GVIM).exe $(VIM).exe $(VIMDLLBASE).dll
MAIN_TARGET = $(VIM).exe
!endif
+# Target to run individual tests.
+VIMTESTTARGET = $(VIM).exe
+
+OLD_TEST_OUTFILES = \
+ $(SCRIPTS_FIRST) \
+ $(SCRIPTS_ALL) \
+ $(SCRIPTS_MORE1) \
+ $(SCRIPTS_MORE4) \
+ $(SCRIPTS_WIN32) \
+ $(SCRIPTS_GUI)
+
all: $(MAIN_TARGET) \
vimrun.exe \
install.exe \
@@ -1370,7 +1381,7 @@ tags: notags
notags:
- if exist tags del tags
-clean:
+clean: testclean
- if exist $(OUTDIR)/nul $(DEL_TREE) $(OUTDIR)
- if exist *.obj del *.obj
- if exist $(VIM).exe del $(VIM).exe
@@ -1405,7 +1416,6 @@ clean:
cd GvimExt
$(MAKE) /NOLOGO -f Makefile clean
cd ..
- - if exist testdir\*.out del testdir\*.out
test:
cd testdir
@@ -1422,13 +1432,24 @@ testclean:
$(MAKE) /NOLOGO -f Make_dos.mak clean
cd ..
+# Run individual OLD style test.
+# These do not depend on the executable, compile it when needed.
+$(OLD_TEST_OUTFILES:.out=):
+ cd testdir
+ - if exist $@.out del $@.out
+ $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog
+ $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) $@.out
+ @ if exist test.log ( type test.log & exit /b 1 )
+ cd ..
+
+# Run individual NEW style test.
+# These do not depend on the executable, compile it when needed.
$(NEW_TESTS):
cd testdir
- if exist $@.res del $@.res
- $(MAKE) /NOLOGO -f Make_dos.mak nolog
- $(MAKE) /NOLOGO -f Make_dos.mak $@.res
- $(MAKE) /NOLOGO -f Make_dos.mak report
- type messages
+ $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog
+ $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) $@.res
+ $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) report
cd ..
###########################################################################
diff --git a/src/Makefile b/src/Makefile
index c084463..90390e0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2193,7 +2193,7 @@ types.vim: $(TAGS_FILES)
#
# Execute the test scripts and the unittests.
# Do the scripttests first, so that the summary shows last.
-test check: unittests test_libvterm scripttests
+test check: unittests $(TERM_TEST) scripttests
# Execute the test scripts. Run these after compiling Vim, before installing.
# This doesn't depend on $(VIMTARGET), because that won't work when configure
diff --git a/src/auto/configure b/src/auto/configure
index 1c00773..61b7272 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -656,6 +656,7 @@ X_PRE_LIBS
X_CFLAGS
XMKMF
xmkmfpath
+TERM_TEST
TERM_OBJ
TERM_SRC
CHANNEL_OBJ
@@ -7911,6 +7912,8 @@ if test "$enable_terminal" = "yes" -a "$enable_channel" = "yes"; then
TERM_OBJ="objects/vterm_encoding.o objects/vterm_keyboard.o objects/vterm_mouse.o objects/vterm_parser.o objects/vterm_pen.o objects/vterm_screen.o objects/vterm_state.o objects/vterm_unicode.o objects/vterm_vterm.o"
+ TERM_TEST="test_libvterm"
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-autoservername argument" >&5
diff --git a/src/autocmd.c b/src/autocmd.c
index 3f87e93..7e8a692 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -174,6 +174,7 @@ static struct event_name
{"TabLeave", EVENT_TABLEAVE},
{"TermChanged", EVENT_TERMCHANGED},
{"TerminalOpen", EVENT_TERMINALOPEN},
+ {"TerminalWinOpen", EVENT_TERMINALWINOPEN},
{"TermResponse", EVENT_TERMRESPONSE},
{"TextChanged", EVENT_TEXTCHANGED},
{"TextChangedI", EVENT_TEXTCHANGEDI},
@@ -1583,8 +1584,8 @@ win_found:
curbuf = curwin->w_buffer;
if (win_valid(aco->save_prevwin))
prevwin = aco->save_prevwin;
- // In case the autocommand move the cursor to a position that that
- // not exist in curbuf.
+ // In case the autocommand moves the cursor to a position that
+ // does not exist in curbuf.
check_cursor();
}
}
diff --git a/src/buffer.c b/src/buffer.c
index 86f6ffc..d190bdf 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2601,6 +2601,13 @@ buflist_findpat(
return match;
}
+#ifdef FEAT_VIMINFO
+typedef struct {
+ buf_T *buf;
+ char_u *match;
+} bufmatch_T;
+#endif
+
/*
* Find all buffer names that match.
* For command line expansion of ":buf" and ":sbuf".
@@ -2619,6 +2626,9 @@ ExpandBufnames(
char_u *p;
int attempt;
char_u *patc;
+#ifdef FEAT_VIMINFO
+ bufmatch_T *matches = NULL;
+#endif
*num_file = 0; /* return values in case of FAIL */
*file = NULL;
@@ -2675,7 +2685,16 @@ ExpandBufnames(
p = home_replace_save(buf, p);
else
p = vim_strsave(p);
- (*file)[count++] = p;
+#ifdef FEAT_VIMINFO
+ if (matches != NULL)
+ {
+ matches[count].buf = buf;
+ matches[count].match = p;
+ count++;
+ }
+ else
+#endif
+ (*file)[count++] = p;
}
}
}
@@ -2691,6 +2710,10 @@ ExpandBufnames(
vim_free(patc);
return FAIL;
}
+#ifdef FEAT_VIMINFO
+ if (options & WILD_BUFLASTUSED)
+ matches = ALLOC_MULT(bufmatch_T, count);
+#endif
}
}
vim_regfree(regmatch.regprog);
@@ -2701,6 +2724,28 @@ ExpandBufnames(
if (patc != pat)
vim_free(patc);
+#ifdef FEAT_VIMINFO
+ if (matches != NULL)
+ {
+ int i;
+ if (count > 1)
+ qsort(matches, count, sizeof(bufmatch_T), buf_compare);
+ // if the current buffer is first in the list, place it at the end
+ if (matches[0].buf == curbuf)
+ {
+ for (i = 1; i < count; i++)
+ (*file)[i-1] = matches[i].match;
+ (*file)[count-1] = matches[0].match;
+ }
+ else
+ {
+ for (i = 0; i < count; i++)
+ (*file)[i] = matches[i].match;
+ }
+ vim_free(matches);
+ }
+#endif
+
*num_file = count;
return (count == 0 ? FAIL : OK);
}
@@ -3016,7 +3061,7 @@ buflist_findlnum(buf_T *buf)
void
buflist_list(exarg_T *eap)
{
- buf_T *buf;
+ buf_T *buf = firstbuf;
int len;
int i;
int ro_char;
@@ -3026,7 +3071,32 @@ buflist_list(exarg_T *eap)
int job_none_open;
#endif
+#ifdef FEAT_VIMINFO
+ garray_T buflist;
+ buf_T **buflist_data = NULL, **p;
+
+ if (vim_strchr(eap->arg, 't'))
+ {
+ ga_init2(&buflist, sizeof(buf_T *), 50);
+ for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+ {
+ if (ga_grow(&buflist, 1) == OK)
+ ((buf_T **)buflist.ga_data)[buflist.ga_len++] = buf;
+ }
+
+ qsort(buflist.ga_data, (size_t)buflist.ga_len,
+ sizeof(buf_T *), buf_compare);
+
+ p = buflist_data = (buf_T **)buflist.ga_data;
+ buf = *p;
+ }
+
+ for (; buf != NULL && !got_int; buf = buflist_data
+ ? (++p < buflist_data + buflist.ga_len ? *p : NULL)
+ : buf->b_next)
+#else
for (buf = firstbuf; buf != NULL && !got_int; buf = buf->b_next)
+#endif
{
#ifdef FEAT_TERMINAL
job_running = term_job_running(buf->b_term);
@@ -3100,13 +3170,23 @@ buflist_list(exarg_T *eap)
do
IObuff[len++] = ' ';
while (--i > 0 && len < IOSIZE - 18);
- vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len),
- _("line %ld"), buf == curbuf ? curwin->w_cursor.lnum
+#ifdef FEAT_VIMINFO
+ if (vim_strchr(eap->arg, 't') && buf->b_last_used)
+ add_time(IObuff + len, (size_t)(IOSIZE - len), buf->b_last_used);
+ else
+#endif
+ vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len),
+ _("line %ld"), buf == curbuf ? curwin->w_cursor.lnum
: (long)buflist_findlnum(buf));
msg_outtrans(IObuff);
out_flush(); /* output one line at a time */
ui_breakcheck();
}
+
+#ifdef FEAT_VIMINFO
+ if (buflist_data)
+ ga_clear(&buflist);
+#endif
}
/*
@@ -4871,7 +4951,7 @@ fix_fname(char_u *fname)
* When resolving a link both "*sfname" and "*ffname" will point to the same
* allocated memory.
* The "*ffname" and "*sfname" pointer values on call will not be freed.
- * Note that the resulting "*ffname" pointer should be considered not allocaed.
+ * Note that the resulting "*ffname" pointer should be considered not allocated.
*/
void
fname_expand(
diff --git a/src/change.c b/src/change.c
index caf9db0..f254281 100644
--- a/src/change.c
+++ b/src/change.c
@@ -371,9 +371,9 @@ invoke_listeners(buf_T *buf)
if (start > lnum)
start = lnum;
lnum = dict_get_number(li->li_tv.vval.v_dict, (char_u *)"end");
- if (lnum > end)
+ if (end < lnum)
end = lnum;
- added = dict_get_number(li->li_tv.vval.v_dict, (char_u *)"added");
+ added += dict_get_number(li->li_tv.vval.v_dict, (char_u *)"added");
}
argv[1].v_type = VAR_NUMBER;
argv[1].vval.v_number = start;
@@ -609,16 +609,21 @@ changed_common(
if (hasAnyFolding(wp))
set_topline(wp, wp->w_topline);
#endif
- // Relative numbering may require updating more. Cursor line
- // highlighting probably needs to be updated if it's below the
- // change (or is using screenline highlighting)
- if (wp->w_p_rnu
+ // Relative numbering may require updating more.
+ if (wp->w_p_rnu)
+ redraw_win_later(wp, SOME_VALID);
#ifdef FEAT_SYN_HL
- || ((wp->w_p_cul && lnum <= wp->w_last_cursorline)
- || (wp->w_p_culopt_flags & CULOPT_SCRLINE))
+ // Cursor line highlighting probably need to be updated with
+ // "VALID" if it's below the change.
+ // If the cursor line is inside the change we need to redraw more.
+ if (wp->w_p_cul)
+ {
+ if (xtra == 0)
+ redraw_win_later(wp, VALID);
+ else if (lnum <= wp->w_last_cursorline)
+ redraw_win_later(wp, SOME_VALID);
+ }
#endif
- )
- redraw_win_later(wp, SOME_VALID);
}
}
diff --git a/src/cindent.c b/src/cindent.c
index dd41672..c37682c 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -1778,10 +1778,10 @@ parse_cino(buf_T *buf)
// should be located.
buf->b_ind_continuation = sw;
- // Spaces from the indent of the line with an unclosed parentheses.
+ // Spaces from the indent of the line with an unclosed parenthesis.
buf->b_ind_unclosed = sw * 2;
- // Spaces from the indent of the line with an unclosed parentheses, which
+ // Spaces from the indent of the line with an unclosed parenthesis, which
// itself is also unclosed.
buf->b_ind_unclosed2 = sw;
@@ -1795,7 +1795,7 @@ parse_cino(buf_T *buf)
buf->b_ind_unclosed_wrapped = 0;
// Suppress ignoring white space when lining up with the character after
- // an unclosed parentheses.
+ // an unclosed parenthesis.
buf->b_ind_unclosed_whiteok = 0;
// Indent a closing parentheses under the line start of the matching
@@ -2725,7 +2725,7 @@ get_c_indent(void)
if (curwin->w_cursor.lnum <= ourscope)
{
// We reached end of scope:
- // If looking for a enum or structure initialization
+ // If looking for an enum or structure initialization
// go further back:
// If it is an initializer (enum xxx or xxx =), then
// don't add ind_continuation, otherwise it is a variable
@@ -2785,7 +2785,7 @@ get_c_indent(void)
if (terminated == ',')
break;
- // if it es a enum declaration or an assignment,
+ // if it is an enum declaration or an assignment,
// we are done.
if (terminated != ';' && cin_isinit())
break;
@@ -3083,7 +3083,7 @@ get_c_indent(void)
// 123,
// sizeof
// here
- // Otherwise check whether it is a enumeration or structure
+ // Otherwise check whether it is an enumeration or structure
// initialisation (not indented) or a variable declaration
// (indented).
terminated = cin_isterminated(l, FALSE, TRUE);
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index b3f18c6..7381b0e 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1976,6 +1976,8 @@ ExpandFromContext(
flags |= EW_KEEPALL;
if (options & WILD_SILENT)
flags |= EW_SILENT;
+ if (options & WILD_NOERROR)
+ flags |= EW_NOERROR;
if (options & WILD_ALLLINKS)
flags |= EW_ALLLINKS;
diff --git a/src/config.mk.in b/src/config.mk.in
index e20a10f..6aa8429 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -87,6 +87,7 @@ CHANNEL_SRC = @CHANNEL_SRC@
CHANNEL_OBJ = @CHANNEL_OBJ@
TERM_SRC = @TERM_SRC@
TERM_OBJ = @TERM_OBJ@
+TERM_TEST = @TERM_TEST@
RUBY = @vi_cv_path_ruby@
RUBY_SRC = @RUBY_SRC@
diff --git a/src/configure.ac b/src/configure.ac
index 3ad223b..b59914b 100644
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -2108,6 +2108,8 @@ if test "$enable_terminal" = "yes" -a "$enable_channel" = "yes"; then
AC_SUBST(TERM_SRC)
TERM_OBJ="objects/vterm_encoding.o objects/vterm_keyboard.o objects/vterm_mouse.o objects/vterm_parser.o objects/vterm_pen.o objects/vterm_screen.o objects/vterm_state.o objects/vterm_unicode.o objects/vterm_vterm.o"
AC_SUBST(TERM_OBJ)
+ TERM_TEST="test_libvterm"
+ AC_SUBST(TERM_TEST)
fi
AC_MSG_CHECKING(--enable-autoservername argument)
diff --git a/src/crypt.c b/src/crypt.c
index 43a7167..729073a 100644
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -206,7 +206,7 @@ crypt_whole_undofile(int method_nr)
}
/*
- * Get crypt method specifc length of the file header in bytes.
+ * Get crypt method specific length of the file header in bytes.
*/
int
crypt_get_header_len(int method_nr)
diff --git a/src/diff.c b/src/diff.c
index ece7bf5..120a544 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -419,7 +419,7 @@ diff_mark_adjust_tp(
off = 0;
if (last < line2)
{
- /* 2. delete at end of of diff */
+ /* 2. delete at end of diff */
dp->df_count[idx] -= last - lnum_deleted + 1;
if (dp->df_next != NULL
&& dp->df_next->df_lnum[idx] - 1 <= line2)
diff --git a/src/drawline.c b/src/drawline.c
index ea7764e..dcfe92c 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -121,9 +121,9 @@ get_sign_display_info(
#endif
)
{
- text_sign = (sattr->text != NULL) ? sattr->typenr : 0;
+ text_sign = (sattr->sat_text != NULL) ? sattr->sat_typenr : 0;
# ifdef FEAT_SIGN_ICONS
- icon_sign = (sattr->icon != NULL) ? sattr->typenr : 0;
+ icon_sign = (sattr->sat_icon != NULL) ? sattr->sat_typenr : 0;
if (gui.in_use && icon_sign != 0)
{
// Use the image in this position.
@@ -158,7 +158,7 @@ get_sign_display_info(
# endif
if (text_sign != 0)
{
- *pp_extra = sattr->text;
+ *pp_extra = sattr->sat_text;
if (*pp_extra != NULL)
{
if (nrcol)
@@ -176,7 +176,7 @@ get_sign_display_info(
*c_finalp = NUL;
*n_extrap = (int)STRLEN(*pp_extra);
}
- *char_attrp = sattr->texthl;
+ *char_attrp = sattr->sat_texthl;
}
}
}
@@ -289,6 +289,8 @@ win_line(
#ifdef FEAT_SYN_HL
int vcol_save_attr = 0; // saved attr for 'cursorcolumn'
int syntax_attr = 0; // attributes desired by syntax
+ int prev_syntax_col = -1; // column of prev_syntax_attr
+ int prev_syntax_attr = 0; // syntax_attr at prev_syntax_col
int has_syntax = FALSE; // this buffer has syntax highl.
int save_did_emsg;
int draw_color_col = FALSE; // highlight colorcolumn
@@ -307,6 +309,7 @@ win_line(
#endif
#ifdef FEAT_SPELL
int has_spell = FALSE; // this buffer has spell checking
+ int can_spell;
# define SPWORDLEN 150
char_u nextline[SPWORDLEN * 2];// text with start of the next line
int nextlinecol = 0; // column where nextline[] starts
@@ -594,7 +597,8 @@ win_line(
}
// Check if the character under the cursor should not be inverted
- if (!highlight_match && lnum == curwin->w_cursor.lnum && wp == curwin
+ if (!highlight_match && lnum == curwin->w_cursor.lnum
+ && wp == curwin
#ifdef FEAT_GUI
&& !gui.in_use
#endif
@@ -674,7 +678,7 @@ win_line(
# ifdef FEAT_SIGNS
// If this line has a sign with line highlighting set line_attr.
if (sign_present)
- line_attr = sattr.linehl;
+ line_attr = sattr.sat_linehl;
# endif
# if defined(FEAT_QUICKFIX)
// Highlight the current line in the quickfix window.
@@ -747,6 +751,7 @@ win_line(
win_attr = wcr_attr;
area_highlighting = TRUE;
}
+
#ifdef FEAT_TEXT_PROP
if (WIN_IS_POPUP(wp))
screen_line_flags |= SLF_POPUP;
@@ -1120,6 +1125,16 @@ win_line(
|| wp->w_p_culopt_flags & CULOPT_LINE))
char_attr = hl_combine_attr(wcr_attr, HL_ATTR(HLF_CLN));
#endif
+ if (wp->w_p_rnu && lnum < wp->w_cursor.lnum
+ && HL_ATTR(HLF_LNA) != 0)
+ // Use LineNrAbove
+ char_attr = hl_combine_attr(wcr_attr,
+ HL_ATTR(HLF_LNA));
+ if (wp->w_p_rnu && lnum > wp->w_cursor.lnum
+ && HL_ATTR(HLF_LNB) != 0)
+ // Use LineNrBelow
+ char_attr = hl_combine_attr(wcr_attr,
+ HL_ATTR(HLF_LNB));
}
}
}
@@ -1281,11 +1296,7 @@ win_line(
break;
}
- if (draw_state == WL_LINE && (area_highlighting
-#ifdef FEAT_SPELL
- || has_spell
-#endif
- ))
+ if (draw_state == WL_LINE && (area_highlighting || extra_check))
{
// handle Visual or match highlighting in this line
if (vcol == fromcol
@@ -1397,13 +1408,88 @@ win_line(
}
#endif
+#ifdef FEAT_SYN_HL
+ if (extra_check && n_extra == 0)
+ {
+ syntax_attr = 0;
+# ifdef FEAT_TERMINAL
+ if (get_term_attr)
+ syntax_attr = term_get_attr(wp->w_buffer, lnum, vcol);
+# endif
+ // Get syntax attribute.
+ if (has_syntax)
+ {
+ // Get the syntax attribute for the character. If there
+ // is an error, disable syntax highlighting.
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
+ v = (long)(ptr - line);
+ if (v == prev_syntax_col)
+ // at same column again
+ syntax_attr = prev_syntax_attr;
+ else
+ {
+# ifdef FEAT_SPELL
+ can_spell = TRUE;
+# endif
+ syntax_attr = get_syntax_attr((colnr_T)v,
+# ifdef FEAT_SPELL
+ has_spell ? &can_spell :
+# endif
+ NULL, FALSE);
+ prev_syntax_col = v;
+ prev_syntax_attr = syntax_attr;
+ }
+
+ if (did_emsg)
+ {
+ wp->w_s->b_syn_error = TRUE;
+ has_syntax = FALSE;
+ syntax_attr = 0;
+ }
+ else
+ did_emsg = save_did_emsg;
+# ifdef SYN_TIME_LIMIT
+ if (wp->w_s->b_syn_slow)
+ has_syntax = FALSE;
+# endif
+
+ // Need to get the line again, a multi-line regexp may
+ // have made it invalid.
+ line = ml_get_buf(wp->w_buffer, lnum, FALSE);
+ ptr = line + v;
+# ifdef FEAT_CONCEAL
+ // no concealing past the end of the line, it interferes
+ // with line highlighting
+ if (*ptr == NUL)
+ syntax_flags = 0;
+ else
+ syntax_flags = get_syntax_info(&syntax_seqnr);
+# endif
+ }
+ }
+#endif
+
// Decide which of the highlight attributes to use.
attr_pri = TRUE;
#ifdef LINE_ATTR
if (area_attr != 0)
+ {
char_attr = hl_combine_attr(line_attr, area_attr);
+# ifdef FEAT_SYN_HL
+ if (syntax_attr != 0)
+ char_attr = hl_combine_attr(syntax_attr, char_attr);
+# endif
+ }
else if (search_attr != 0)
+ {
char_attr = hl_combine_attr(line_attr, search_attr);
+# ifdef FEAT_SYN_HL
+ if (syntax_attr != 0)
+ char_attr = hl_combine_attr(syntax_attr, char_attr);
+# endif
+ }
# ifdef FEAT_TEXT_PROP
else if (text_prop_type != NULL)
{
@@ -1420,7 +1506,12 @@ win_line(
{
// Use line_attr when not in the Visual or 'incsearch' area
// (area_attr may be 0 when "noinvcur" is set).
- char_attr = line_attr;
+# ifdef FEAT_SYN_HL
+ if (syntax_attr != 0)
+ char_attr = hl_combine_attr(syntax_attr, line_attr);
+ else
+# endif
+ char_attr = line_attr;
attr_pri = FALSE;
}
#else
@@ -1445,15 +1536,21 @@ win_line(
else
#endif
#ifdef FEAT_SYN_HL
- if (has_syntax)
char_attr = syntax_attr;
- else
-#endif
+#else
char_attr = 0;
+#endif
}
}
- if (char_attr == 0)
- char_attr = win_attr;
+
+ // combine attribute with 'wincolor'
+ if (win_attr != 0)
+ {
+ if (char_attr == 0)
+ char_attr = win_attr;
+ else
+ char_attr = hl_combine_attr(win_attr, char_attr);
+ }
// Get the next character to put on the screen.
@@ -1742,103 +1839,11 @@ win_line(
if (extra_check)
{
#ifdef FEAT_SPELL
- int can_spell = TRUE;
-#endif
-
-#ifdef FEAT_TERMINAL
- if (get_term_attr)
- {
- syntax_attr = term_get_attr(wp->w_buffer, lnum, vcol);
-
- if (!attr_pri)
- char_attr = syntax_attr;
- else
- char_attr = hl_combine_attr(syntax_attr, char_attr);
- }
-#endif
-
-#ifdef FEAT_SYN_HL
- // Get syntax attribute, unless still at the start of the line
- // (double-wide char that doesn't fit).
- v = (long)(ptr - line);
- if (has_syntax && v > 0)
- {
- // Get the syntax attribute for the character. If there
- // is an error, disable syntax highlighting.
- save_did_emsg = did_emsg;
- did_emsg = FALSE;
-
- syntax_attr = get_syntax_attr((colnr_T)v - 1,
-# ifdef FEAT_SPELL
- has_spell ? &can_spell :
-# endif
- NULL, FALSE);
-
- if (did_emsg)
- {
- wp->w_s->b_syn_error = TRUE;
- has_syntax = FALSE;
- syntax_attr = 0;
- }
- else
- did_emsg = save_did_emsg;
-
- // combine syntax attribute with 'wincolor'
- if (win_attr != 0)
- syntax_attr = hl_combine_attr(win_attr, syntax_attr);
-
-# ifdef SYN_TIME_LIMIT
- if (wp->w_s->b_syn_slow)
- has_syntax = FALSE;
-# endif
-
- // Need to get the line again, a multi-line regexp may
- // have made it invalid.
- line = ml_get_buf(wp->w_buffer, lnum, FALSE);
- ptr = line + v;
-
-# ifdef FEAT_TEXT_PROP
- // Text properties overrule syntax highlighting or combine.
- if (text_prop_attr == 0 || text_prop_combine)
-# endif
- {
- int comb_attr = syntax_attr;
-# ifdef FEAT_TEXT_PROP
- comb_attr = hl_combine_attr(text_prop_attr, comb_attr);
-# endif
- if (!attr_pri)
- {
-#ifdef FEAT_SYN_HL
- if (cul_attr)
- char_attr = hl_combine_attr(
- comb_attr, cul_attr);
- else
-#endif
- if (line_attr)
- char_attr = hl_combine_attr(
- comb_attr, line_attr);
- else
- char_attr = comb_attr;
- }
- else
- char_attr = hl_combine_attr(comb_attr, char_attr);
- }
-# ifdef FEAT_CONCEAL
- // no concealing past the end of the line, it interferes
- // with line highlighting
- if (c == NUL)
- syntax_flags = 0;
- else
- syntax_flags = get_syntax_info(&syntax_seqnr);
-# endif
- }
-#endif
-
-#ifdef FEAT_SPELL
// Check spelling (unless at the end of the line).
// Only do this when there is no syntax highlighting, the
// @Spell cluster is not used or the current syntax item
// contains the @Spell cluster.
+ v = (long)(ptr - line);
if (has_spell && v >= word_end && v > cur_checked_col)
{
spell_attr = 0;
@@ -1889,7 +1894,8 @@ win_line(
// Remember that the good word continues at the
// start of the next line.
checked_lnum = lnum + 1;
- checked_col = (int)((p - nextline) + len - nextline_idx);
+ checked_col = (int)((p - nextline)
+ + len - nextline_idx);
}
// Turn index into actual attributes.
@@ -2319,7 +2325,8 @@ win_line(
if (win_attr != 0)
{
char_attr = win_attr;
- if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+ if (wp->w_p_cul && lnum == wp->w_cursor.lnum
+ && wp->w_p_culopt_flags != CULOPT_NBR)
{
if (!cul_screenline || (vcol >= left_curline_col
&& vcol <= right_curline_col))
@@ -3134,4 +3141,3 @@ win_line(
vim_free(p_extra_free);
return row;
}
-
diff --git a/src/drawscreen.c b/src/drawscreen.c
index f6776a1..abf34b5 100644
--- a/src/drawscreen.c
+++ b/src/drawscreen.c
@@ -2124,7 +2124,12 @@ win_update(win_T *wp)
|| (wp->w_match_head != NULL
&& buf->b_mod_xlines != 0)
#endif
- )))))
+ ))))
+#ifdef FEAT_SYN_HL
+ || (wp->w_p_cul && (lnum == wp->w_cursor.lnum
+ || lnum == wp->w_last_cursorline))
+#endif
+ )
{
#ifdef FEAT_SEARCH_EXTRA
if (lnum == mod_top)
diff --git a/src/edit.c b/src/edit.c
index 78f5cd7..4cbfc77 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -235,7 +235,6 @@ edit(
conceal_check_cursor_line();
#endif
-#ifdef FEAT_MOUSE
/*
* When doing a paste with the middle mouse button, Insstart is set to
* where the paste started.
@@ -243,7 +242,6 @@ edit(
if (where_paste_started.lnum != 0)
Insstart = where_paste_started;
else
-#endif
{
Insstart = curwin->w_cursor;
if (startln)
@@ -336,7 +334,6 @@ edit(
*/
if (restart_edit != 0 && stuff_empty())
{
-#ifdef FEAT_MOUSE
/*
* After a paste we consider text typed to be part of the insert for
* the pasted text. You can backspace over the pasted text too.
@@ -344,7 +341,6 @@ edit(
if (where_paste_started.lnum)
arrow_used = FALSE;
else
-#endif
arrow_used = TRUE;
restart_edit = 0;
@@ -381,9 +377,7 @@ edit(
/* Need to save the line for undo before inserting the first char. */
ins_need_undo = TRUE;
-#ifdef FEAT_MOUSE
where_paste_started.lnum = 0;
-#endif
#ifdef FEAT_CINDENT
can_cindent = TRUE;
#endif
@@ -980,7 +974,6 @@ doESCkey:
inserted_space = FALSE;
break;
-#ifdef FEAT_MOUSE
case K_LEFTMOUSE: /* mouse keys */
case K_LEFTMOUSE_NM:
case K_LEFTDRAG:
@@ -1017,7 +1010,7 @@ doESCkey:
case K_MOUSERIGHT: /* Scroll wheel right */
ins_mousescroll(MSCR_RIGHT);
break;
-#endif
+
case K_PS:
bracketed_paste(PASTE_INSERT, FALSE, NULL);
if (cmdchar == K_PS)
diff --git a/src/eval.c b/src/eval.c
index 0fe8fd3..ace1e01 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3526,7 +3526,8 @@ get_string_tv(char_u **arg, typval_T *rettv, int evaluate)
break;
/* Special key, e.g.: "\<C-W>" */
- case '<': extra = trans_special(&p, name, TRUE, TRUE);
+ case '<': extra = trans_special(&p, name, TRUE, TRUE,
+ TRUE, NULL);
if (extra != 0)
{
name += extra;
diff --git a/src/evalbuffer.c b/src/evalbuffer.c
index 35c9ed2..a82b897 100644
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -595,6 +595,10 @@ get_buffer_info(buf_T *buf)
}
#endif
+#ifdef FEAT_VIMINFO
+ dict_add_number(dict, "lastused", buf->b_last_used);
+#endif
+
return dict;
}
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 962c6c4..62a7f06 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -815,9 +815,7 @@ static funcentry_T global_functions[] =
#ifdef FEAT_GUI
{"test_scrollbar", 3, 3, FEARG_2, f_test_scrollbar},
#endif
-#ifdef FEAT_MOUSE
{"test_setmouse", 2, 2, 0, f_test_setmouse},
-#endif
{"test_settime", 1, 1, FEARG_1, f_test_settime},
#ifdef FEAT_TIMERS
{"timer_info", 0, 1, FEARG_1, f_timer_info},
@@ -3433,9 +3431,7 @@ f_has(typval_T *argvars, typval_T *rettv)
"mksession",
#endif
"modify_fname",
-#ifdef FEAT_MOUSE
"mouse",
-#endif
#ifdef FEAT_MOUSESHAPE
"mouseshape",
#endif
@@ -5698,12 +5694,13 @@ search_cmn(typval_T *argvars, pos_T *match_pos, int *flagsp)
int dir;
int retval = 0; /* default: FAIL */
long lnum_stop = 0;
- proftime_T tm;
#ifdef FEAT_RELTIME
+ proftime_T tm;
long time_limit = 0;
#endif
int options = SEARCH_KEEP;
int subpatnum;
+ searchit_arg_T sia;
pat = tv_get_string(&argvars[0]);
dir = get_search_arg(&argvars[1], flagsp); /* may set p_ws */
@@ -5752,8 +5749,13 @@ search_cmn(typval_T *argvars, pos_T *match_pos, int *flagsp)
}
pos = save_cursor = curwin->w_cursor;
+ vim_memset(&sia, 0, sizeof(sia));
+ sia.sa_stop_lnum = (linenr_T)lnum_stop;
+#ifdef FEAT_RELTIME
+ sia.sa_tm = &tm;
+#endif
subpatnum = searchit(curwin, curbuf, &pos, NULL, dir, pat, 1L,
- options, RE_SEARCH, (linenr_T)lnum_stop, &tm, NULL);
+ options, RE_SEARCH, &sia);
if (subpatnum != FAIL)
{
if (flags & SP_SUBPAT)
@@ -6151,7 +6153,9 @@ do_searchpair(
int use_skip = FALSE;
int err;
int options = SEARCH_KEEP;
+#ifdef FEAT_RELTIME
proftime_T tm;
+#endif
/* Make 'cpoptions' empty, the 'l' flag should not be used here. */
save_cpo = p_cpo;
@@ -6192,8 +6196,15 @@ do_searchpair(
pat = pat3;
for (;;)
{
+ searchit_arg_T sia;
+
+ vim_memset(&sia, 0, sizeof(sia));
+ sia.sa_stop_lnum = lnum_stop;
+#ifdef FEAT_RELTIME
+ sia.sa_tm = &tm;
+#endif
n = searchit(curwin, curbuf, &pos, NULL, dir, pat, 1L,
- options, RE_SEARCH, lnum_stop, &tm, NULL);
+ options, RE_SEARCH, &sia);
if (n == FAIL || (firstpos.lnum != 0 && EQUAL_POS(pos, firstpos)))
/* didn't find it or found the first match again: FAIL */
break;
diff --git a/src/evalvars.c b/src/evalvars.c
index 08a9cc2..3aaae13 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -143,6 +143,7 @@ static struct vimvar
{VV_NAME("event", VAR_DICT), VV_RO},
{VV_NAME("versionlong", VAR_NUMBER), VV_RO},
{VV_NAME("echospace", VAR_NUMBER), VV_RO},
+ {VV_NAME("argv", VAR_LIST), VV_RO},
};
// shorthand
@@ -756,10 +757,13 @@ ex_let_const(exarg_T *eap, int is_const)
if (l != NULL)
{
rettv_list_set(&rettv, l);
- op[0] = '=';
- op[1] = NUL;
- (void)ex_let_vars(eap->arg, &rettv, FALSE, semicolon, var_count,
+ if (!eap->skip)
+ {
+ op[0] = '=';
+ op[1] = NUL;
+ (void)ex_let_vars(eap->arg, &rettv, FALSE, semicolon, var_count,
is_const, op);
+ }
clear_tv(&rettv);
}
}
@@ -2083,6 +2087,27 @@ set_vim_var_dict(int idx, dict_T *val)
}
/*
+ * Set the v:argv list.
+ */
+ void
+set_argv_var(char **argv, int argc)
+{
+ list_T *l = list_alloc();
+ int i;
+
+ if (l == NULL)
+ getout(1);
+ l->lv_lock = VAR_FIXED;
+ for (i = 0; i < argc; ++i)
+ {
+ if (list_append_string(l, (char_u *)argv[i], -1) == FAIL)
+ getout(1);
+ l->lv_last->li_tv.v_lock = VAR_FIXED;
+ }
+ set_vim_var_list(VV_ARGV, l);
+}
+
+/*
* Set v:register if needed.
*/
void
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index fc70e2c..a7f80a8 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -251,18 +251,23 @@ linelen(int *has_tab)
int save;
int len;
- /* find the first non-blank character */
+ // Get the line. If it's empty bail out early (could be the empty string
+ // for an unloaded buffer).
line = ml_get_curline();
+ if (*line == NUL)
+ return 0;
+
+ // find the first non-blank character
first = skipwhite(line);
- /* find the character after the last non-blank character */
+ // find the character after the last non-blank character
for (last = first + STRLEN(first);
last > first && VIM_ISWHITE(last[-1]); --last)
;
save = *last;
*last = NUL;
- len = linetabsize(line); /* get line length */
- if (has_tab != NULL) /* check for embedded TAB */
+ len = linetabsize(line); // get line length
+ if (has_tab != NULL) // check for embedded TAB
*has_tab = (vim_strchr(first, TAB) != NULL);
*last = save;
@@ -3862,6 +3867,7 @@ do_sub(exarg_T *eap)
linenr_T sub_firstlnum; /* nr of first sub line */
#ifdef FEAT_TEXT_PROP
int apc_flags = APC_SAVE_FOR_UNDO | APC_SUBSTITUTE;
+ colnr_T total_added = 0;
#endif
/*
@@ -3941,6 +3947,11 @@ do_sub(exarg_T *eap)
VIM_CLEAR(sub_firstline);
}
+ // Match might be after the last line for "\n\zs" matching at
+ // the end of the last line.
+ if (lnum > curbuf->b_ml.ml_line_count)
+ break;
+
if (sub_firstline == NULL)
{
sub_firstline = vim_strsave(ml_get(sub_firstlnum));
@@ -4274,13 +4285,18 @@ do_sub(exarg_T *eap)
#ifdef FEAT_TEXT_PROP
if (curbuf->b_has_textprop)
{
+ int bytes_added = sublen - 1 - (regmatch.endpos[0].col
+ - regmatch.startpos[0].col);
+
// When text properties are changed, need to save for
// undo first, unless done already.
- if (adjust_prop_columns(lnum, regmatch.startpos[0].col,
- sublen - 1 - (regmatch.endpos[0].col
- - regmatch.startpos[0].col),
- apc_flags))
+ if (adjust_prop_columns(lnum,
+ total_added + regmatch.startpos[0].col,
+ bytes_added, apc_flags))
apc_flags &= ~APC_SAVE_FOR_UNDO;
+ // Offset for column byte number of the text property
+ // in the resulting buffer afterwards.
+ total_added += bytes_added;
}
#endif
}
@@ -4919,13 +4935,14 @@ free_old_sub(void)
#if defined(FEAT_QUICKFIX) || defined(PROTO)
/*
* Set up for a tagpreview.
+ * Makes the preview window the current window.
* Return TRUE when it was created.
*/
int
prepare_tagpreview(
int undo_sync, // sync undo when leaving the window
int use_previewpopup, // use popup if 'previewpopup' set
- int use_popup) // use other popup window
+ use_popup_T use_popup) // use other popup window
{
win_T *wp;
@@ -4945,11 +4962,16 @@ prepare_tagpreview(
if (wp != NULL)
popup_set_wantpos_cursor(wp, wp->w_minwidth);
}
- else if (use_popup)
+ else if (use_popup != USEPOPUP_NONE)
{
wp = popup_find_info_window();
if (wp != NULL)
- popup_show(wp);
+ {
+ if (use_popup == USEPOPUP_NORMAL)
+ popup_show(wp);
+ else
+ popup_hide(wp);
+ }
}
else
# endif
@@ -4966,8 +4988,9 @@ prepare_tagpreview(
* There is no preview window open yet. Create one.
*/
# ifdef FEAT_TEXT_PROP
- if ((use_previewpopup && *p_pvp != NUL) || use_popup)
- return popup_create_preview_window(use_popup);
+ if ((use_previewpopup && *p_pvp != NUL)
+ || use_popup != USEPOPUP_NONE)
+ return popup_create_preview_window(use_popup != USEPOPUP_NONE);
# endif
if (win_split(g_do_tagpreview > 0 ? g_do_tagpreview : 0, 0) == FAIL)
return FALSE;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a4a8756..385cf3b 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -87,7 +87,6 @@ static char_u *replace_makeprg(exarg_T *eap, char_u *p, char_u **cmdlinep);
static char_u *repl_cmdline(exarg_T *eap, char_u *src, int srclen, char_u *repl, char_u **cmdlinep);
static void ex_highlight(exarg_T *eap);
static void ex_colorscheme(exarg_T *eap);
-static void ex_quit(exarg_T *eap);
static void ex_cquit(exarg_T *eap);
static void ex_quit_all(exarg_T *eap);
static void ex_close(exarg_T *eap);
@@ -559,6 +558,27 @@ do_exmode(
}
/*
+ * Print the executed command for when 'verbose' is set.
+ * When "lnum" is 0 only print the command.
+ */
+ static void
+msg_verbose_cmd(linenr_T lnum, char_u *cmd)
+{
+ ++no_wait_return;
+ verbose_enter_scroll();
+
+ if (lnum == 0)
+ smsg(_("Executing: %s"), cmd);
+ else
+ smsg(_("line %ld: %s"), (long)lnum, cmd);
+ if (msg_silent == 0)
+ msg_puts("\n"); // don't overwrite this
+
+ verbose_leave_scroll();
+ --no_wait_return;
+}
+
+/*
* Execute a simple command line. Used for translated commands like "*".
*/
int
@@ -944,18 +964,7 @@ do_cmdline(
}
if (p_verbose >= 15 && sourcing_name != NULL)
- {
- ++no_wait_return;
- verbose_enter_scroll();
-
- smsg(_("line %ld: %s"),
- (long)sourcing_lnum, cmdline_copy);
- if (msg_silent == 0)
- msg_puts("\n"); /* don't overwrite this */
-
- verbose_leave_scroll();
- --no_wait_return;
- }
+ msg_verbose_cmd(sourcing_lnum, cmdline_copy);
/*
* 2. Execute one '|' separated command.
@@ -1666,6 +1675,9 @@ do_one_cmd(
if ((*cmdlinep)[0] == '#' && (*cmdlinep)[1] == '!')
goto doend;
+ if (p_verbose >= 16)
+ msg_verbose_cmd(0, *cmdlinep);
+
/*
* 1. Skip comment lines and leading white space and colons.
* 2. Handle command modifiers.
@@ -3587,7 +3599,7 @@ get_address(
curwin->w_cursor.col = 0;
searchcmdlen = 0;
flags = silent ? 0 : SEARCH_HIS | SEARCH_MSG;
- if (!do_search(NULL, c, cmd, 1L, flags, NULL, NULL))
+ if (!do_search(NULL, c, cmd, 1L, flags, NULL))
{
curwin->w_cursor = pos;
cmd = NULL;
@@ -3641,8 +3653,7 @@ get_address(
pos.coladd = 0;
if (searchit(curwin, curbuf, &pos, NULL,
*cmd == '?' ? BACKWARD : FORWARD,
- (char_u *)"", 1L, SEARCH_MSG,
- i, (linenr_T)0, NULL, NULL) != FAIL)
+ (char_u *)"", 1L, SEARCH_MSG, i, NULL) != FAIL)
lnum = pos.lnum;
else
{
@@ -4199,7 +4210,8 @@ expand_filename(
else /* n == 2 */
{
expand_T xpc;
- int options = WILD_LIST_NOTFOUND|WILD_ADD_SLASH;
+ int options = WILD_LIST_NOTFOUND
+ | WILD_NOERROR | WILD_ADD_SLASH;
ExpandInit(&xpc);
xpc.xp_context = EXPAND_FILES;
@@ -4805,9 +4817,9 @@ before_quit_autocmds(win_T *wp, int quit_all, int forceit)
{
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, wp->w_buffer);
- /* Bail out when autocommands closed the window.
- * Refuse to quit when the buffer in the last window is being closed (can
- * only happen in autocommands). */
+ // Bail out when autocommands closed the window.
+ // Refuse to quit when the buffer in the last window is being closed (can
+ // only happen in autocommands).
if (!win_valid(wp)
|| curbuf_locked()
|| (wp->w_buffer->b_nwindows == 1 && wp->w_buffer->b_locked > 0))
@@ -4816,9 +4828,10 @@ before_quit_autocmds(win_T *wp, int quit_all, int forceit)
if (quit_all || (check_more(FALSE, forceit) == OK && only_one_window()))
{
apply_autocmds(EVENT_EXITPRE, NULL, NULL, FALSE, curbuf);
- /* Refuse to quit when locked or when the buffer in the last window is
- * being closed (can only happen in autocommands). */
- if (curbuf_locked()
+ // Refuse to quit when locked or when the window was closed or the
+ // buffer in the last window is being closed (can only happen in
+ // autocommands).
+ if (!win_valid(wp) || curbuf_locked()
|| (curbuf->b_nwindows == 1 && curbuf->b_locked > 0))
return TRUE;
}
@@ -4829,8 +4842,9 @@ before_quit_autocmds(win_T *wp, int quit_all, int forceit)
/*
* ":quit": quit current window, quit Vim if the last window is closed.
* ":{nr}quit": quit window {nr}
+ * Also used when closing a terminal window that's the last one.
*/
- static void
+ void
ex_quit(exarg_T *eap)
{
win_T *wp;
@@ -8534,9 +8548,9 @@ ex_folddo(exarg_T *eap)
{
linenr_T lnum;
-#ifdef FEAT_CLIPBOARD
+# ifdef FEAT_CLIPBOARD
start_global_changes();
-#endif
+# endif
/* First set the marks for all lines closed/open. */
for (lnum = eap->line1; lnum <= eap->line2; ++lnum)
@@ -8546,9 +8560,9 @@ ex_folddo(exarg_T *eap)
/* Execute the command on the marked lines. */
global_exe(eap->arg);
ml_clearmarked(); /* clear rest of the marks */
-#ifdef FEAT_CLIPBOARD
+# ifdef FEAT_CLIPBOARD
end_global_changes();
-#endif
+# endif
}
#endif
@@ -8566,7 +8580,7 @@ is_loclist_cmd(int cmdidx)
}
#endif
-# if defined(FEAT_TIMERS) || defined(PROTO)
+#if defined(FEAT_TIMERS) || defined(PROTO)
int
get_pressedreturn(void)
{
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 838bd84..5cc1c34 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -373,6 +373,7 @@ may_do_incsearch_highlighting(
pos_T end_pos;
#ifdef FEAT_RELTIME
proftime_T tm;
+ searchit_arg_T sia;
#endif
int next_char;
int use_last_pat;
@@ -445,12 +446,16 @@ may_do_incsearch_highlighting(
if (search_first_line != 0)
search_flags += SEARCH_START;
ccline.cmdbuff[skiplen + patlen] = NUL;
+#ifdef FEAT_RELTIME
+ vim_memset(&sia, 0, sizeof(sia));
+ sia.sa_tm = &tm;
+#endif
found = do_search(NULL, firstc == ':' ? '/' : firstc,
ccline.cmdbuff + skiplen, count, search_flags,
#ifdef FEAT_RELTIME
- &tm, NULL
+ &sia
#else
- NULL, NULL
+ NULL
#endif
);
ccline.cmdbuff[skiplen + patlen] = next_char;
@@ -520,6 +525,7 @@ may_do_incsearch_highlighting(
curwin->w_redr_status = TRUE;
update_screen(SOME_VALID);
+ highlight_match = FALSE;
restore_last_search_pattern();
// Leave it at the end to make CTRL-R CTRL-W work. But not when beyond the
@@ -597,8 +603,7 @@ may_adjust_incsearch_highlighting(
pat[patlen] = NUL;
i = searchit(curwin, curbuf, &t, NULL,
c == Ctrl_G ? FORWARD : BACKWARD,
- pat, count, search_flags,
- RE_SEARCH, 0, NULL, NULL);
+ pat, count, search_flags, RE_SEARCH, NULL);
--emsg_off;
pat[patlen] = save;
if (i)
@@ -638,6 +643,7 @@ may_adjust_incsearch_highlighting(
highlight_match = TRUE;
save_viewstate(&is_state->old_viewstate);
update_screen(NOT_VALID);
+ highlight_match = FALSE;
redrawcmdline();
curwin->w_cursor = is_state->match_end;
}
@@ -795,11 +801,9 @@ getcmdline_int(
int save_msg_scroll = msg_scroll;
int save_State = State; /* remember State when called */
int some_key_typed = FALSE; /* one of the keys was typed */
-#ifdef FEAT_MOUSE
/* mouse drag and release events are ignored, unless they are
* preceded with a mouse down event */
int ignore_drag_release = TRUE;
-#endif
#ifdef FEAT_EVAL
int break_ctrl_c = FALSE;
#endif
@@ -1403,6 +1407,9 @@ getcmdline_int(
*/
if ((c == p_wc && !gotesc && KeyTyped) || c == p_wcm)
{
+ int options = WILD_NO_BEEP;
+ if (wim_flags[wim_index] & WIM_BUFLASTUSED)
+ options |= WILD_BUFLASTUSED;
if (xpc.xp_numfiles > 0) /* typed p_wc at least twice */
{
/* if 'wildmode' contains "list" may still need to list */
@@ -1415,10 +1422,10 @@ getcmdline_int(
did_wild_list = TRUE;
}
if (wim_flags[wim_index] & WIM_LONGEST)
- res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP,
+ res = nextwild(&xpc, WILD_LONGEST, options,
firstc != '@');
else if (wim_flags[wim_index] & WIM_FULL)
- res = nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP,
+ res = nextwild(&xpc, WILD_NEXT, options,
firstc != '@');
else
res = OK; /* don't insert 'wildchar' now */
@@ -1430,10 +1437,10 @@ getcmdline_int(
/* if 'wildmode' first contains "longest", get longest
* common part */
if (wim_flags[0] & WIM_LONGEST)
- res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP,
+ res = nextwild(&xpc, WILD_LONGEST, options,
firstc != '@');
else
- res = nextwild(&xpc, WILD_EXPAND_KEEP, WILD_NO_BEEP,
+ res = nextwild(&xpc, WILD_EXPAND_KEEP, options,
firstc != '@');
/* if interrupted while completing, behave like it failed */
@@ -1484,10 +1491,10 @@ getcmdline_int(
redrawcmd();
did_wild_list = TRUE;
if (wim_flags[wim_index] & WIM_LONGEST)
- nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP,
+ nextwild(&xpc, WILD_LONGEST, options,
firstc != '@');
else if (wim_flags[wim_index] & WIM_FULL)
- nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP,
+ nextwild(&xpc, WILD_NEXT, options,
firstc != '@');
}
else
@@ -1856,7 +1863,6 @@ getcmdline_int(
break;
#endif
-#ifdef FEAT_MOUSE
case K_MIDDLEDRAG:
case K_MIDDLERELEASE:
goto cmdline_not_changed; /* Ignore mouse */
@@ -1961,8 +1967,6 @@ getcmdline_int(
case K_MOUSEMOVE:
goto cmdline_not_changed;
-#endif /* FEAT_MOUSE */
-
#ifdef FEAT_GUI
case K_LEFTMOUSE_NM: /* mousefocus click, ignored */
case K_LEFTRELEASE_NM:
@@ -2195,9 +2199,7 @@ getcmdline_int(
case Ctrl_V:
case Ctrl_Q:
-#ifdef FEAT_MOUSE
ignore_drag_release = TRUE;
-#endif
putcmdline('^', TRUE);
c = get_literal(); /* get next (two) character(s) */
do_abbr = FALSE; /* don't do abbreviation now */
@@ -2213,13 +2215,11 @@ getcmdline_int(
#ifdef FEAT_DIGRAPHS
case Ctrl_K:
-#ifdef FEAT_MOUSE
ignore_drag_release = TRUE;
-#endif
putcmdline('?', TRUE);
-#ifdef USE_ON_FLY_SCROLL
+# ifdef USE_ON_FLY_SCROLL
dont_scroll = TRUE; /* disallow scrolling here */
-#endif
+# endif
c = get_digraph(TRUE);
extra_char = NUL;
if (c != NUL)
@@ -2227,7 +2227,7 @@ getcmdline_int(
redrawcmd();
goto cmdline_not_changed;
-#endif /* FEAT_DIGRAPHS */
+#endif // FEAT_DIGRAPHS
#ifdef FEAT_RIGHTLEFT
case Ctrl__: /* CTRL-_: switch language mode */
diff --git a/src/feature.h b/src/feature.h
index b2ba162..4c0758d 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -430,18 +430,6 @@
#endif
/*
- * +textprop Text properties and popup windows
- */
-#if defined(FEAT_EVAL) && defined(FEAT_SYN_HL)
-# define FEAT_TEXT_PROP
-#endif
-
-#if defined(FEAT_SYN_HL) && defined(FEAT_RELTIME)
-// Can limit syntax highlight time to 'redrawtime'.
-# define SYN_TIME_LIMIT 1
-#endif
-
-/*
* +spell spell checking
*
* Disabled for EBCDIC: * Doesn't work (SIGSEGV).
@@ -964,12 +952,12 @@
* console mouse handling.
* +mouse_urxvt Unix only: Include code for for urxvt mosue handling.
* +mouse Any mouse support (any of the above enabled).
+ * Always included, since either FEAT_MOUSE_XTERM or
+ * DOS_MOUSE is defined.
*/
/* OS/2 and Amiga console have no mouse support */
-#if !defined(AMIGA)
-# ifdef FEAT_NORMAL
-# define FEAT_MOUSE_XTERM
-# endif
+#if defined(UNIX) || defined(VMS)
+# define FEAT_MOUSE_XTERM
# ifdef FEAT_BIG
# define FEAT_MOUSE_NET
# endif
@@ -979,12 +967,12 @@
# ifdef FEAT_BIG
# define FEAT_MOUSE_URXVT
# endif
-# if defined(FEAT_NORMAL) && defined(MSWIN)
-# define DOS_MOUSE
-# endif
-# if defined(FEAT_NORMAL) && defined(__QNX__)
-# define FEAT_MOUSE_PTERM
-# endif
+#endif
+#if defined(MSWIN)
+# define DOS_MOUSE
+#endif
+#if defined(__QNX__)
+# define FEAT_MOUSE_PTERM
#endif
/*
@@ -1002,28 +990,11 @@
# define FEAT_SYSMOUSE
#endif
-/* urxvt is a small variation of mouse_xterm, and shares its code */
+// urxvt is a small variation of mouse_xterm, and shares its code
#if defined(FEAT_MOUSE_URXVT) && !defined(FEAT_MOUSE_XTERM)
# define FEAT_MOUSE_XTERM
#endif
-/* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
-#if !defined(FEAT_MOUSE_TTY) \
- && (defined(FEAT_MOUSE_XTERM) \
- || defined(FEAT_MOUSE_NET) \
- || defined(FEAT_MOUSE_DEC) \
- || defined(DOS_MOUSE) \
- || defined(FEAT_MOUSE_GPM) \
- || defined(FEAT_MOUSE_JSB) \
- || defined(FEAT_MOUSE_PTERM) \
- || defined(FEAT_SYSMOUSE) \
- || defined(FEAT_MOUSE_URXVT))
-# define FEAT_MOUSE_TTY /* include non-GUI mouse support */
-#endif
-#if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
-# define FEAT_MOUSE /* include generic mouse support */
-#endif
-
/*
* +clipboard Clipboard support. Always used for the GUI.
* +xterm_clipboard Unix only: Include code for handling the clipboard
@@ -1093,7 +1064,7 @@
* to check if mouse dragging can be used and if term
* codes can be obtained.
*/
-#if (defined(FEAT_NORMAL) || defined(FEAT_MOUSE)) && defined(HAVE_TGETENT)
+#if defined(HAVE_TGETENT)
# define FEAT_TERMRESPONSE
#endif
@@ -1136,10 +1107,6 @@
# define FEAT_ARP
#endif
-/*
- * +GUI_Athena To compile Vim with or without the GUI (gvim) you have
- * +GUI_Motif to edit the Makefile.
- */
/*
* +ole Win32 OLE automation: Use Makefile.ovc.
@@ -1155,6 +1122,8 @@
* +tcl TCL interface: "--enable-tclinterp"
* +netbeans_intg Netbeans integration
* +channel Inter process communication
+ * +GUI_Athena Athena GUI
+ * +GUI_Motif Motif GUI
*/
/*
@@ -1187,6 +1156,23 @@
#if defined(FEAT_TERMINAL) && !defined(CURSOR_SHAPE)
# define CURSOR_SHAPE
#endif
+#if defined(FEAT_TERMINAL) && !defined(FEAT_SYN_HL)
+// simplify the code a bit by enabling +syntax when +terminal is enabled
+# define FEAT_SYN_HL
+#endif
+
+/*
+ * +textprop Text properties and popup windows
+ */
+#if defined(FEAT_EVAL) && defined(FEAT_SYN_HL)
+# define FEAT_TEXT_PROP
+#endif
+
+#if defined(FEAT_SYN_HL) && defined(FEAT_RELTIME)
+// Can limit syntax highlight time to 'redrawtime'.
+# define SYN_TIME_LIMIT 1
+#endif
+
/*
* +signs Allow signs to be displayed to the left of text lines.
diff --git a/src/filepath.c b/src/filepath.c
index cf401dc..4ddeeaf 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -30,26 +30,56 @@
get_short_pathname(char_u **fnamep, char_u **bufp, int *fnamelen)
{
int l, len;
- char_u *newbuf;
+ WCHAR *newbuf;
+ WCHAR *wfname;
- len = *fnamelen;
- l = GetShortPathName((LPSTR)*fnamep, (LPSTR)*fnamep, len);
+ len = MAXPATHL;
+ newbuf = malloc(len * sizeof(*newbuf));
+ if (newbuf == NULL)
+ return FAIL;
+
+ wfname = enc_to_utf16(*fnamep, NULL);
+ if (wfname == NULL)
+ {
+ vim_free(newbuf);
+ return FAIL;
+ }
+
+ l = GetShortPathNameW(wfname, newbuf, len);
if (l > len - 1)
{
// If that doesn't work (not enough space), then save the string
// and try again with a new buffer big enough.
- newbuf = vim_strnsave(*fnamep, l);
+ WCHAR *newbuf_t = newbuf;
+ newbuf = vim_realloc(newbuf, (l + 1) * sizeof(*newbuf));
if (newbuf == NULL)
+ {
+ vim_free(wfname);
+ vim_free(newbuf_t);
return FAIL;
-
- vim_free(*bufp);
- *fnamep = *bufp = newbuf;
-
+ }
// Really should always succeed, as the buffer is big enough.
- l = GetShortPathName((LPSTR)*fnamep, (LPSTR)*fnamep, l+1);
+ l = GetShortPathNameW(wfname, newbuf, l+1);
+ }
+ if (l != 0)
+ {
+ char_u *p = utf16_to_enc(newbuf, NULL);
+ if (p != NULL)
+ {
+ vim_free(*bufp);
+ *fnamep = *bufp = p;
+ }
+ else
+ {
+ vim_free(wfname);
+ vim_free(newbuf);
+ return FAIL;
+ }
}
+ vim_free(wfname);
+ vim_free(newbuf);
- *fnamelen = l;
+ *fnamelen = l == 0 ? l : STRLEN(*bufp);
return OK;
}
diff --git a/src/getchar.c b/src/getchar.c
index 0e4e3c3..31843f6 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -52,7 +52,7 @@ static int typeahead_char = 0; /* typeahead char that's not flushed */
*/
static int block_redo = FALSE;
-static int KeyNoremap = 0; /* remapping flags */
+static int KeyNoremap = 0; // remapping flags
/*
* Variables used by vgetorpeek() and flush_buffers().
@@ -1325,10 +1325,8 @@ save_typebuf(void)
static int old_char = -1; /* character put back by vungetc() */
static int old_mod_mask; /* mod_mask for ungotten character */
-#ifdef FEAT_MOUSE
static int old_mouse_row; /* mouse_row related to old_char */
static int old_mouse_col; /* mouse_col related to old_char */
-#endif
/*
* Save all three kinds of typeahead, so that the user must type at a prompt.
@@ -1506,7 +1504,7 @@ before_blocking(void)
}
/*
- * updatescipt() is called when a character can be written into the script file
+ * updatescript() is called when a character can be written into the script file
* or when we have waited some time for a character (c == 0)
*
* All the changed memfiles are synced if c == 0 or when the number of typed
@@ -1559,10 +1557,8 @@ vgetc(void)
c = old_char;
old_char = -1;
mod_mask = old_mod_mask;
-#ifdef FEAT_MOUSE
mouse_row = old_mouse_row;
mouse_col = old_mouse_col;
-#endif
}
else
{
@@ -1771,7 +1767,7 @@ vgetc(void)
if (!no_reduce_keys)
{
// A modifier was not used for a mapping, apply it to ASCII
- // keys.
+ // keys. Shift would already have been applied.
if ((mod_mask & MOD_MASK_CTRL)
&& ((c >= '`' && c <= 0x7f)
|| (c >= '@' && c <= '_')))
@@ -2007,7 +2003,6 @@ f_getchar(typval_T *argvars, typval_T *rettv)
rettv->v_type = VAR_STRING;
rettv->vval.v_string = vim_strsave(temp);
-#ifdef FEAT_MOUSE
if (is_mouse_key(n))
{
int row = mouse_row;
@@ -2025,11 +2020,11 @@ f_getchar(typval_T *argvars, typval_T *rettv)
if (win == NULL)
return;
(void)mouse_comp_pos(win, &row, &col, &lnum, NULL);
-# ifdef FEAT_TEXT_PROP
+#ifdef FEAT_TEXT_PROP
if (WIN_IS_POPUP(win))
winnr = 0;
else
-# endif
+#endif
for (wp = firstwin; wp != win && wp != NULL;
wp = wp->w_next)
++winnr;
@@ -2039,7 +2034,6 @@ f_getchar(typval_T *argvars, typval_T *rettv)
set_vim_var_nr(VV_MOUSE_COL, col + 1);
}
}
-#endif
}
}
@@ -2065,8 +2059,8 @@ f_getcharmod(typval_T *argvars UNUSED, typval_T *rettv)
void
parse_queued_messages(void)
{
- int old_curwin_id = curwin->w_id;
- int old_curbuf_fnum = curbuf->b_fnum;
+ int old_curwin_id;
+ int old_curbuf_fnum;
int i;
int save_may_garbage_collect = may_garbage_collect;
static int entered = 0;
@@ -2077,6 +2071,14 @@ parse_queued_messages(void)
if (updating_screen)
return;
+ // If memory allocation fails during startup we'll exit but curbuf or
+ // curwin could be NULL.
+ if (curbuf == NULL || curwin == NULL)
+ return;
+
+ old_curbuf_fnum = curbuf->b_fnum;
+ old_curwin_id = curwin->w_id;
+
++entered;
// may_garbage_collect is set in main_loop() to do garbage collection when
@@ -2149,6 +2151,24 @@ typedef enum {
} map_result_T;
/*
+ * Check if the bytes at the start of the typeahead buffer are a character used
+ * in CTRL-X mode. This includes the form with a CTRL modifier.
+ */
+ static int
+at_ctrl_x_key(void)
+{
+ char_u *p = typebuf.tb_buf + typebuf.tb_off;
+ int c = *p;
+
+ if (typebuf.tb_len > 3
+ && c == K_SPECIAL
+ && p[1] == KS_MODIFIER
+ && (p[2] & MOD_MASK_CTRL))
+ c = p[3] & 0x1f;
+ return vim_is_ctrl_x_key(c);
+}
+
+/*
* Handle mappings in the typeahead buffer.
* - When something was mapped, return map_result_retry for recursive mappings.
* - When nothing mapped and typeahead has a character: return map_result_get.
@@ -2199,7 +2219,7 @@ handle_mapping(
&& !(State == HITRETURN && (tb_c1 == CAR || tb_c1 == ' '))
&& State != ASKMORE
&& State != CONFIRM
- && !((ctrl_x_mode_not_default() && vim_is_ctrl_x_key(tb_c1))
+ && !((ctrl_x_mode_not_default() && at_ctrl_x_key())
|| ((compl_cont_status & CONT_LOCAL)
&& (tb_c1 == Ctrl_N || tb_c1 == Ctrl_P))))
{
@@ -2240,6 +2260,7 @@ handle_mapping(
// Skip ":lmap" mappings if keys were mapped.
if (mp->m_keys[0] == tb_c1
&& (mp->m_mode & local_State)
+ && !(mp->m_simplified && seenModifyOtherKeys)
&& ((mp->m_mode & LANGMAP) == 0 || typebuf.tb_maplen == 0))
{
#ifdef FEAT_LANGMAP
@@ -2635,10 +2656,8 @@ vungetc(int c)
{
old_char = c;
old_mod_mask = mod_mask;
-#ifdef FEAT_MOUSE
old_mouse_row = mouse_row;
old_mouse_col = mouse_col;
-#endif
}
/*
diff --git a/src/globals.h b/src/globals.h
index d790c82..2244503 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -99,7 +99,7 @@ EXTERN short *TabPageIdxs INIT(= NULL);
// Array with size Rows x Columns containing zindex of popups.
EXTERN short *popup_mask INIT(= NULL);
EXTERN short *popup_mask_next INIT(= NULL);
-// Array with flags for tansparent cells of current popup.
+// Array with flags for transparent cells of current popup.
EXTERN char *popup_transparent INIT(= NULL);
// Flag set to TRUE when popup_mask needs to be updated.
@@ -393,7 +393,7 @@ EXTERN int include_link INIT(= 0); // when 2 include "link" and "clear"
* character just after the match in the last line.
*/
EXTERN int highlight_match INIT(= FALSE); // show search match pos
-EXTERN linenr_T search_match_lines; // lines of of matched string
+EXTERN linenr_T search_match_lines; // lines of matched string
EXTERN colnr_T search_match_endcol; // col nr of match end
#ifdef FEAT_SEARCH_EXTRA
EXTERN linenr_T search_first_line INIT(= 0); // for :{FIRST},{last}s/pat
@@ -470,7 +470,6 @@ EXTERN bufref_T au_new_curbuf INIT(= {NULL COMMA 0 COMMA 0});
EXTERN buf_T *au_pending_free_buf INIT(= NULL);
EXTERN win_T *au_pending_free_win INIT(= NULL);
-#ifdef FEAT_MOUSE
/*
* Mouse coordinates, set by check_termcode()
*/
@@ -480,15 +479,15 @@ EXTERN int mouse_past_bottom INIT(= FALSE);// mouse below last line
EXTERN int mouse_past_eol INIT(= FALSE); // mouse right of line
EXTERN int mouse_dragging INIT(= 0); // extending Visual area with
// mouse dragging
-# if defined(FEAT_MOUSE_DEC)
+#if defined(FEAT_MOUSE_DEC)
/*
* When the DEC mouse has been pressed but not yet released we enable
* automatic queries for the mouse position.
*/
EXTERN int WantQueryMouse INIT(= FALSE);
-# endif
+#endif
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
// When the window layout is about to be changed, need_mouse_correct is set,
// so that gui_mouse_correct() is called afterwards, to correct the mouse
// pointer when focus-follow-mouse is being used.
@@ -496,10 +495,10 @@ EXTERN int need_mouse_correct INIT(= FALSE);
// When double clicking, topline must be the same
EXTERN linenr_T gui_prev_topline INIT(= 0);
-# ifdef FEAT_DIFF
+# ifdef FEAT_DIFF
EXTERN int gui_prev_topfill INIT(= 0);
-# endif
# endif
+#endif
# ifdef FEAT_MOUSESHAPE
EXTERN int drag_status_line INIT(= FALSE); // dragging the status line
@@ -508,7 +507,6 @@ EXTERN int postponed_mouseshape INIT(= FALSE); // postponed updating the
EXTERN int drag_sep_line INIT(= FALSE); // dragging vert separator
# endif
-#endif
#ifdef FEAT_DIFF
// Value set from 'diffopt'.
@@ -678,7 +676,7 @@ EXTERN buf_T *curbuf INIT(= NULL); // currently active buffer
// Iterate through all the signs placed in a buffer
#define FOR_ALL_SIGNS_IN_BUF(buf, sign) \
- for (sign = buf->b_signlist; sign != NULL; sign = sign->next)
+ for (sign = buf->b_signlist; sign != NULL; sign = sign->se_next)
// Flag that is set when switching off 'swapfile'. It means that all blocks
// are to be loaded into memory. Shouldn't be global...
@@ -785,13 +783,11 @@ EXTERN int resel_VIsual_mode INIT(= NUL); // 'v', 'V', or Ctrl-V
EXTERN linenr_T resel_VIsual_line_count; // number of lines
EXTERN colnr_T resel_VIsual_vcol; // nr of cols or end col
-#ifdef FEAT_MOUSE
/*
* When pasting text with the middle mouse button in visual mode with
* restart_edit set, remember where it started so we can set Insstart.
*/
EXTERN pos_T where_paste_started;
-#endif
/*
* This flag is used to make auto-indent work right on lines where only a
@@ -1002,6 +998,10 @@ EXTERN int ex_no_reprint INIT(= FALSE); // no need to print after z or p
EXTERN int reg_recording INIT(= 0); // register for recording or zero
EXTERN int reg_executing INIT(= 0); // register being executed or zero
+// Set when a modifyOtherKeys sequence was seen, then simplified mappings will
+// no longer be used.
+EXTERN int seenModifyOtherKeys INIT(= FALSE);
+
EXTERN int no_mapping INIT(= FALSE); // currently no mapping allowed
EXTERN int no_zero_mapping INIT(= 0); // mapping zero not allowed
EXTERN int allow_keys INIT(= FALSE); // allow key codes when no_mapping
diff --git a/src/gui.c b/src/gui.c
index 860add2..31be46c 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -5383,7 +5383,7 @@ gui_do_findrepl(
i = msg_scroll;
if (down)
{
- (void)do_search(NULL, '/', ga.ga_data, 1L, searchflags, NULL, NULL);
+ (void)do_search(NULL, '/', ga.ga_data, 1L, searchflags, NULL);
}
else
{
@@ -5391,7 +5391,7 @@ gui_do_findrepl(
* direction */
p = vim_strsave_escaped(ga.ga_data, (char_u *)"?");
if (p != NULL)
- (void)do_search(NULL, '?', p, 1L, searchflags, NULL, NULL);
+ (void)do_search(NULL, '?', p, 1L, searchflags, NULL);
vim_free(p);
}
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 1bf836f..d57cefa 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -2895,7 +2895,7 @@ drawarea_configure_event_cb(GtkWidget *widget,
*
* Naturally, configure events propagated to here like that are fallacious
* and, as a matter of fact, they trigger a geometric collapse of
- * gui.drawarea in fullscreen and miximized modes.
+ * gui.drawarea in fullscreen and maximized modes.
*
* To filter out such nuisance events, we are making use of the fact that
* the field send_event of such GdkEventConfigures is set to FALSE in
diff --git a/src/gui_mac.c b/src/gui_mac.c
index b43ed85..185cdee 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -2177,7 +2177,8 @@ gui_mac_unicode_key_event(
key_char = simplify_key(key_char, (int *)&vimModifiers);
/* Interpret META, include SHIFT, etc. */
- key_char = extract_modifiers(key_char, (int *)&vimModifiers);
+ key_char = extract_modifiers(key_char, (int *)&vimModifiers,
+ TRUE, NULL);
if (key_char == CSI)
key_char = K_CSI;
@@ -4772,7 +4773,8 @@ gui_mch_add_menu_item(vimmenu_T *menu, int idx)
char_u *p_actext;
p_actext = menu->actext;
- key = find_special_key(&p_actext, &modifiers, FALSE, FALSE, FALSE);
+ key = find_special_key(&p_actext, &modifiers, FALSE, FALSE, FALSE,
+ TRUE, NULL);
if (*p_actext != 0)
key = 0; /* error: trailing text */
/* find_special_key() returns a keycode with as many of the
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 61b09e1..4ee1863 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -850,7 +850,7 @@ _OnSysChar(
modifiers &= ~MOD_MASK_SHIFT;
/* Interpret the ALT key as making the key META, include SHIFT, etc. */
- ch = extract_modifiers(ch, &modifiers);
+ ch = extract_modifiers(ch, &modifiers, TRUE, NULL);
if (ch == CSI)
ch = K_CSI;
@@ -2610,7 +2610,9 @@ ex_simalt(exarg_T *eap)
key_name[1] = KS_EXTRA;
key_name[2] = KE_NOP;
key_name[3] = NUL;
+#if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
typebuf_was_filled = TRUE;
+#endif
(void)ins_typebuf(key_name, REMAP_NONE, 0, TRUE, FALSE);
}
}
diff --git a/src/highlight.c b/src/highlight.c
index 0fdd93a..3c0eb19 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -1417,7 +1417,8 @@ do_highlight(
*/
for (p = arg, off = 0; off < 100 - 6 && *p; )
{
- len = trans_special(&p, buf + off, FALSE, FALSE);
+ len = trans_special(&p, buf + off, FALSE, FALSE,
+ TRUE, NULL);
if (len > 0) // recognized special char
off += len;
else // copy as normal char
@@ -3681,7 +3682,8 @@ match_add(
return -1;
if (id < -1 || id == 0)
{
- semsg(_("E799: Invalid ID: %d (must be greater than or equal to 1)"), id);
+ semsg(_("E799: Invalid ID: %d (must be greater than or equal to 1)"),
+ id);
return -1;
}
if (id != -1)
@@ -4345,7 +4347,7 @@ prepare_search_hl_line(
* After end, check for start/end of next match.
* When another match, have to check for start again.
* Watch out for matching an empty string!
- * Return the udpated search_attr.
+ * Return the updated search_attr.
*/
int
update_search_hl(
diff --git a/src/if_lua.c b/src/if_lua.c
index 4c0eb42..31d9659 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1612,7 +1612,8 @@ luaV_print(lua_State *L)
lua_pop(L, 1);
}
luaL_pushresult(&b);
- luaV_msg(L);
+ if (!got_int)
+ luaV_msg(L);
return 0;
}
diff --git a/src/if_ole.cpp b/src/if_ole.cpp
index cb643e5..34ce232 100644
--- a/src/if_ole.cpp
+++ b/src/if_ole.cpp
@@ -330,7 +330,7 @@ CVim::SendKeys(BSTR keys)
}
/* Translate key codes like <Esc> */
- str = replace_termcodes((char_u *)buffer, &ptr, FALSE, TRUE, FALSE);
+ str = replace_termcodes((char_u *)buffer, &ptr, REPTERM_DO_LT, NULL);
/* If ptr was set, then a new buffer was allocated,
* so we can free the old one.
diff --git a/src/if_py_both.h b/src/if_py_both.h
index aa44bf8..ee848f9 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -375,9 +375,13 @@ writer(writefn fn, char_u *str, PyInt n)
PythonIO_Flush();
old_fn = fn;
- /* Write each NL separated line. Text after the last NL is kept for
- * writing later. */
- while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
+ // Write each NL separated line. Text after the last NL is kept for
+ // writing later.
+ // For normal messages: Do not output when "got_int" was set. This avoids
+ // a loop gone crazy flooding the terminal with messages. Also for when
+ // "q" is pressed at the more-prompt.
+ while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL
+ && (fn == (writefn)emsg || !got_int))
{
PyInt len = ptr - str;
@@ -392,8 +396,9 @@ writer(writefn fn, char_u *str, PyInt n)
io_ga.ga_len = 0;
}
- /* Put the remaining text into io_ga for later printing. */
- if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK)
+ // Put the remaining text into io_ga for later printing.
+ if (n > 0 && (fn == (writefn)emsg || !got_int)
+ && ga_grow(&io_ga, (int)(n + 1)) == OK)
{
mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n);
io_ga.ga_len += (int)n;
diff --git a/src/if_python3.c b/src/if_python3.c
index b0b1152..26b973b 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -600,6 +600,42 @@ static struct
{"", NULL},
};
+# if PY_VERSION_HEX >= 0x030800f0
+ static inline void
+py3__Py_DECREF(const char *filename UNUSED, int lineno UNUSED, PyObject *op)
+{
+ _Py_DEC_REFTOTAL;
+ if (--op->ob_refcnt != 0)
+ {
+# ifdef Py_REF_DEBUG
+ if (op->ob_refcnt < 0)
+ {
+ _Py_NegativeRefcount(filename, lineno, op);
+ }
+# endif
+ }
+ else
+ {
+ _Py_Dealloc(op);
+ }
+}
+
+# undef Py_DECREF
+# define Py_DECREF(op) py3__Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op))
+
+ static inline void
+py3__Py_XDECREF(PyObject *op)
+{
+ if (op != NULL)
+ {
+ Py_DECREF(op);
+ }
+}
+
+# undef Py_XDECREF
+# define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op))
+# endif
+
/*
* Free python.dll
*/
diff --git a/src/insexpand.c b/src/insexpand.c
index 644542e..e42819a 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -1612,7 +1612,7 @@ ins_compl_new_leader(void)
#ifdef FEAT_SPELL
spell_bad_len = 0; // need to redetect bad word
#endif
- // Matches were cleared, need to search for them now. Befor drawing
+ // Matches were cleared, need to search for them now. Before drawing
// the popup menu display the changed text before the cursor. Set
// "compl_restarting" to avoid that the first match is inserted.
pum_call_update_screen();
@@ -2858,7 +2858,7 @@ ins_compl_get_exp(pos_T *ini)
// Buffers other than curbuf are scanned from the beginning or the
// end but never from the middle, thus setting nowrapscan in this
- // buffers is a good idea, on the other hand, we always set
+ // buffer is a good idea, on the other hand, we always set
// wrapscan for curbuf to avoid missing matches -- Acevedo,Webb
save_p_ws = p_ws;
if (ins_buf != curbuf)
@@ -2881,7 +2881,7 @@ ins_compl_get_exp(pos_T *ini)
found_new_match = searchit(NULL, ins_buf, pos, NULL,
compl_direction,
compl_pattern, 1L, SEARCH_KEEP + SEARCH_NFMSG,
- RE_LAST, (linenr_T)0, NULL, NULL);
+ RE_LAST, NULL);
--msg_silent;
if (!compl_started || set_match_pos)
{
diff --git a/src/macros.h b/src/macros.h
index f670046..5da0e5c 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -335,7 +335,7 @@
} \
} while (0)
-/* Wether a command index indicates a user command. */
+/* Whether a command index indicates a user command. */
#define IS_USER_CMDIDX(idx) ((int)(idx) < 0)
// Give an error in curwin is a popup window and evaluate to TRUE.
diff --git a/src/main.c b/src/main.c
index 33ac89c..2ec5c26 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1009,7 +1009,11 @@ common_init(mparm_T *paramp)
TIME_MSG("inits 1");
#ifdef FEAT_EVAL
- set_lang_var(); /* set v:lang and v:ctype */
+ // set v:lang and v:ctype
+ set_lang_var();
+
+ // set v:argv
+ set_argv_var(paramp->argv, paramp->argc);
#endif
#ifdef FEAT_SIGNS
@@ -1380,27 +1384,20 @@ main_loop(
validate_cursor();
#ifdef FEAT_SYN_HL
- if (curwin->w_p_cul && curwin->w_p_wrap
- && (curwin->w_p_culopt_flags & CULOPT_SCRLINE))
- must_redraw = NOT_VALID;
+ // Might need to update for 'cursorline'.
+ // When 'cursorlineopt' is "screenline" need to redraw always.
+ if (curwin->w_p_cul
+ && (curwin->w_last_cursorline != curwin->w_cursor.lnum
+ || (curwin->w_p_culopt_flags & CULOPT_SCRLINE))
+ && !char_avail())
+ redraw_later(VALID);
#endif
-
if (VIsual_active)
update_curbuf(INVERTED); // update inverted part
else if (must_redraw)
{
mch_disable_flush(); // Stop issuing gui_mch_flush().
-#ifdef FEAT_SYN_HL
- // Might need some more update for the cursorscreen line.
- // TODO: can we optimize this?
- if (curwin->w_p_cul
- && curwin->w_p_wrap
- && (curwin->w_p_culopt_flags & CULOPT_SCRLINE)
- && !char_avail())
- update_screen(VALID);
- else
-#endif
- update_screen(0);
+ update_screen(0);
mch_enable_flush();
}
else if (redraw_cmdline || clear_cmdline)
@@ -4339,7 +4336,7 @@ server_to_input_buf(char_u *str)
* <lt> sequence is recognised - needed for a real backslash.
*/
p_cpo = (char_u *)"Bk";
- str = replace_termcodes((char_u *)str, &ptr, FALSE, TRUE, FALSE);
+ str = replace_termcodes((char_u *)str, &ptr, REPTERM_DO_LT, NULL);
p_cpo = cpo_save;
if (*ptr != NUL) /* trailing CTRL-V results in nothing */
diff --git a/src/map.c b/src/map.c
index df8cbed..1b2660f 100644
--- a/src/map.c
+++ b/src/map.c
@@ -256,18 +256,15 @@ do_map(
char_u *p;
int n;
int len = 0; // init for GCC
- char_u *newstr;
int hasarg;
int haskey;
- int did_it = FALSE;
- int did_local = FALSE;
- int round;
+ int do_print;
+ int keyround;
char_u *keys_buf = NULL;
+ char_u *alt_keys_buf = NULL;
char_u *arg_buf = NULL;
int retval = 0;
int do_backslash;
- int hash;
- int new_hash;
mapblock_T **abbr_table;
mapblock_T **map_table;
int unique = FALSE;
@@ -277,6 +274,7 @@ do_map(
#ifdef FEAT_EVAL
int expr = FALSE;
#endif
+ int did_simplify = FALSE;
int noremap;
char_u *orig_rhs;
@@ -375,6 +373,7 @@ do_map(
rhs = p;
hasarg = (*rhs != NUL);
haskey = (*keys != NUL);
+ do_print = !haskey || (maptype != 1 && !hasarg);
// check for :unmap without argument
if (maptype == 1 && !haskey)
@@ -389,373 +388,434 @@ do_map(
// replace_termcodes() may move the result to allocated memory, which
// needs to be freed later (*keys_buf and *arg_buf).
// replace_termcodes() also removes CTRL-Vs and sometimes backslashes.
+ // If something like <C-H> is simplified to 0x08 then mark it as simplified
+ // and also add a n entry with a modifier, which will work when
+ // modifyOtherKeys is working.
if (haskey)
- keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special);
+ {
+ char_u *new_keys;
+ int flags = REPTERM_FROM_PART | REPTERM_DO_LT;
+
+ if (special)
+ flags |= REPTERM_SPECIAL;
+ new_keys = replace_termcodes(keys, &keys_buf, flags, &did_simplify);
+ if (did_simplify)
+ (void)replace_termcodes(keys, &alt_keys_buf,
+ flags | REPTERM_NO_SIMPLIFY, NULL);
+ keys = new_keys;
+ }
orig_rhs = rhs;
if (hasarg)
{
if (STRICMP(rhs, "<nop>") == 0) // "<Nop>" means nothing
rhs = (char_u *)"";
else
- rhs = replace_termcodes(rhs, &arg_buf, FALSE, TRUE, special);
+ rhs = replace_termcodes(rhs, &arg_buf,
+ REPTERM_DO_LT | (special ? REPTERM_SPECIAL : 0), NULL);
}
- // check arguments and translate function keys
- if (haskey)
+ /*
+ * The following is done twice if we have two versions of keys:
+ * "alt_keys_buf" is not NULL.
+ */
+ for (keyround = 1; keyround <= 2; ++keyround)
{
- len = (int)STRLEN(keys);
- if (len > MAXMAPLEN) // maximum length of MAXMAPLEN chars
+ int did_it = FALSE;
+ int did_local = FALSE;
+ int round;
+ int hash;
+ int new_hash;
+
+ if (keyround == 2)
{
- retval = 1;
- goto theend;
+ if (alt_keys_buf == NULL)
+ break;
+ keys = alt_keys_buf;
}
+ else if (alt_keys_buf != NULL && do_print)
+ // when printing always use the not-simplified map
+ keys = alt_keys_buf;
- if (abbrev && maptype != 1)
+ // check arguments and translate function keys
+ if (haskey)
{
- // If an abbreviation ends in a keyword character, the
- // rest must be all keyword-char or all non-keyword-char.
- // Otherwise we won't be able to find the start of it in a
- // vi-compatible way.
- if (has_mbyte)
+ len = (int)STRLEN(keys);
+ if (len > MAXMAPLEN) // maximum length of MAXMAPLEN chars
{
- int first, last;
- int same = -1;
-
- first = vim_iswordp(keys);
- last = first;
- p = keys + (*mb_ptr2len)(keys);
- n = 1;
- while (p < keys + len)
- {
- ++n; // nr of (multi-byte) chars
- last = vim_iswordp(p); // type of last char
- if (same == -1 && last != first)
- same = n - 1; // count of same char type
- p += (*mb_ptr2len)(p);
- }
- if (last && n > 2 && same >= 0 && same < n - 1)
+ retval = 1;
+ goto theend;
+ }
+
+ if (abbrev && maptype != 1)
+ {
+ // If an abbreviation ends in a keyword character, the
+ // rest must be all keyword-char or all non-keyword-char.
+ // Otherwise we won't be able to find the start of it in a
+ // vi-compatible way.
+ if (has_mbyte)
{
- retval = 1;
- goto theend;
+ int first, last;
+ int same = -1;
+
+ first = vim_iswordp(keys);
+ last = first;
+ p = keys + (*mb_ptr2len)(keys);
+ n = 1;
+ while (p < keys + len)
+ {
+ ++n; // nr of (multi-byte) chars
+ last = vim_iswordp(p); // type of last char
+ if (same == -1 && last != first)
+ same = n - 1; // count of same char type
+ p += (*mb_ptr2len)(p);
+ }
+ if (last && n > 2 && same >= 0 && same < n - 1)
+ {
+ retval = 1;
+ goto theend;
+ }
}
- }
- else if (vim_iswordc(keys[len - 1])) // ends in keyword char
+ else if (vim_iswordc(keys[len - 1]))
+ // ends in keyword char
for (n = 0; n < len - 2; ++n)
if (vim_iswordc(keys[n]) != vim_iswordc(keys[len - 2]))
{
retval = 1;
goto theend;
}
- // An abbreviation cannot contain white space.
- for (n = 0; n < len; ++n)
- if (VIM_ISWHITE(keys[n]))
- {
- retval = 1;
- goto theend;
- }
+ // An abbreviation cannot contain white space.
+ for (n = 0; n < len; ++n)
+ if (VIM_ISWHITE(keys[n]))
+ {
+ retval = 1;
+ goto theend;
+ }
+ }
}
- }
- if (haskey && hasarg && abbrev) // if we will add an abbreviation
- no_abbr = FALSE; // reset flag that indicates there are
+ if (haskey && hasarg && abbrev) // if we will add an abbreviation
+ no_abbr = FALSE; // reset flag that indicates there are
// no abbreviations
- if (!haskey || (maptype != 1 && !hasarg))
- msg_start();
+ if (do_print)
+ msg_start();
- // Check if a new local mapping wasn't already defined globally.
- if (map_table == curbuf->b_maphash && haskey && hasarg && maptype != 1)
- {
- // need to loop over all global hash lists
- for (hash = 0; hash < 256 && !got_int; ++hash)
+ // Check if a new local mapping wasn't already defined globally.
+ if (map_table == curbuf->b_maphash && haskey && hasarg && maptype != 1)
{
- if (abbrev)
- {
- if (hash != 0) // there is only one abbreviation list
- break;
- mp = first_abbr;
- }
- else
- mp = maphash[hash];
- for ( ; mp != NULL && !got_int; mp = mp->m_next)
+ // need to loop over all global hash lists
+ for (hash = 0; hash < 256 && !got_int; ++hash)
{
- // check entries with the same mode
- if ((mp->m_mode & mode) != 0
- && mp->m_keylen == len
- && unique
- && STRNCMP(mp->m_keys, keys, (size_t)len) == 0)
+ if (abbrev)
{
- if (abbrev)
- semsg(_("E224: global abbreviation already exists for %s"),
- mp->m_keys);
- else
- semsg(_("E225: global mapping already exists for %s"),
- mp->m_keys);
- retval = 5;
- goto theend;
+ if (hash != 0) // there is only one abbreviation list
+ break;
+ mp = first_abbr;
+ }
+ else
+ mp = maphash[hash];
+ for ( ; mp != NULL && !got_int; mp = mp->m_next)
+ {
+ // check entries with the same mode
+ if ((mp->m_mode & mode) != 0
+ && mp->m_keylen == len
+ && unique
+ && STRNCMP(mp->m_keys, keys, (size_t)len) == 0)
+ {
+ if (abbrev)
+ semsg(_(
+ "E224: global abbreviation already exists for %s"),
+ mp->m_keys);
+ else
+ semsg(_(
+ "E225: global mapping already exists for %s"),
+ mp->m_keys);
+ retval = 5;
+ goto theend;
+ }
}
}
}
- }
- // When listing global mappings, also list buffer-local ones here.
- if (map_table != curbuf->b_maphash && !hasarg && maptype != 1)
- {
- // need to loop over all global hash lists
- for (hash = 0; hash < 256 && !got_int; ++hash)
+ // When listing global mappings, also list buffer-local ones here.
+ if (map_table != curbuf->b_maphash && !hasarg && maptype != 1)
{
- if (abbrev)
+ // need to loop over all global hash lists
+ for (hash = 0; hash < 256 && !got_int; ++hash)
{
- if (hash != 0) // there is only one abbreviation list
- break;
- mp = curbuf->b_first_abbr;
- }
- else
- mp = curbuf->b_maphash[hash];
- for ( ; mp != NULL && !got_int; mp = mp->m_next)
- {
- // check entries with the same mode
- if ((mp->m_mode & mode) != 0)
+ if (abbrev)
{
- if (!haskey) // show all entries
- {
- showmap(mp, TRUE);
- did_local = TRUE;
- }
- else
+ if (hash != 0) // there is only one abbreviation list
+ break;
+ mp = curbuf->b_first_abbr;
+ }
+ else
+ mp = curbuf->b_maphash[hash];
+ for ( ; mp != NULL && !got_int; mp = mp->m_next)
+ {
+ // check entries with the same mode
+ if (!mp->m_simplified && (mp->m_mode & mode) != 0)
{
- n = mp->m_keylen;
- if (STRNCMP(mp->m_keys, keys,
- (size_t)(n < len ? n : len)) == 0)
+ if (!haskey) // show all entries
{
showmap(mp, TRUE);
did_local = TRUE;
}
+ else
+ {
+ n = mp->m_keylen;
+ if (STRNCMP(mp->m_keys, keys,
+ (size_t)(n < len ? n : len)) == 0)
+ {
+ showmap(mp, TRUE);
+ did_local = TRUE;
+ }
+ }
}
}
}
}
- }
- // Find an entry in the maphash[] list that matches.
- // For :unmap we may loop two times: once to try to unmap an entry with a
- // matching 'from' part, a second time, if the first fails, to unmap an
- // entry with a matching 'to' part. This was done to allow ":ab foo bar"
- // to be unmapped by typing ":unab foo", where "foo" will be replaced by
- // "bar" because of the abbreviation.
- for (round = 0; (round == 0 || maptype == 1) && round <= 1
- && !did_it && !got_int; ++round)
- {
- // need to loop over all hash lists
- for (hash = 0; hash < 256 && !got_int; ++hash)
+ // Find an entry in the maphash[] list that matches.
+ // For :unmap we may loop two times: once to try to unmap an entry with
+ // a matching 'from' part, a second time, if the first fails, to unmap
+ // an entry with a matching 'to' part. This was done to allow ":ab foo
+ // bar" to be unmapped by typing ":unab foo", where "foo" will be
+ // replaced by "bar" because of the abbreviation.
+ for (round = 0; (round == 0 || maptype == 1) && round <= 1
+ && !did_it && !got_int; ++round)
{
- if (abbrev)
- {
- if (hash > 0) // there is only one abbreviation list
- break;
- mpp = abbr_table;
- }
- else
- mpp = &(map_table[hash]);
- for (mp = *mpp; mp != NULL && !got_int; mp = *mpp)
+ // need to loop over all hash lists
+ for (hash = 0; hash < 256 && !got_int; ++hash)
{
-
- if (!(mp->m_mode & mode)) // skip entries with wrong mode
- {
- mpp = &(mp->m_next);
- continue;
- }
- if (!haskey) // show all entries
+ if (abbrev)
{
- showmap(mp, map_table != maphash);
- did_it = TRUE;
+ if (hash > 0) // there is only one abbreviation list
+ break;
+ mpp = abbr_table;
}
- else // do we have a match?
+ else
+ mpp = &(map_table[hash]);
+ for (mp = *mpp; mp != NULL && !got_int; mp = *mpp)
{
- if (round) // second round: Try unmap "rhs" string
- {
- n = (int)STRLEN(mp->m_str);
- p = mp->m_str;
- }
- else
+
+ if ((mp->m_mode & mode) == 0)
{
- n = mp->m_keylen;
- p = mp->m_keys;
+ // skip entries with wrong mode
+ mpp = &(mp->m_next);
+ continue;
}
- if (STRNCMP(p, keys, (size_t)(n < len ? n : len)) == 0)
+ if (!haskey) // show all entries
{
- if (maptype == 1) // delete entry
- {
- // Only accept a full match. For abbreviations we
- // ignore trailing space when matching with the
- // "lhs", since an abbreviation can't have
- // trailing space.
- if (n != len && (!abbrev || round || n > len
- || *skipwhite(keys + n) != NUL))
- {
- mpp = &(mp->m_next);
- continue;
- }
- // We reset the indicated mode bits. If nothing is
- // left the entry is deleted below.
- mp->m_mode &= ~mode;
- did_it = TRUE; // remember we did something
- }
- else if (!hasarg) // show matching entry
+ if (!mp->m_simplified)
{
showmap(mp, map_table != maphash);
did_it = TRUE;
}
- else if (n != len) // new entry is ambiguous
+ }
+ else // do we have a match?
+ {
+ if (round) // second round: Try unmap "rhs" string
{
- mpp = &(mp->m_next);
- continue;
+ n = (int)STRLEN(mp->m_str);
+ p = mp->m_str;
}
- else if (unique)
+ else
{
- if (abbrev)
- semsg(_("E226: abbreviation already exists for %s"),
- p);
- else
- semsg(_("E227: mapping already exists for %s"), p);
- retval = 5;
- goto theend;
+ n = mp->m_keylen;
+ p = mp->m_keys;
}
- else // new rhs for existing entry
+ if (STRNCMP(p, keys, (size_t)(n < len ? n : len)) == 0)
{
- mp->m_mode &= ~mode; // remove mode bits
- if (mp->m_mode == 0 && !did_it) // reuse entry
+ if (maptype == 1)
{
- newstr = vim_strsave(rhs);
- if (newstr == NULL)
+ // Delete entry.
+ // Only accept a full match. For abbreviations
+ // we ignore trailing space when matching with
+ // the "lhs", since an abbreviation can't have
+ // trailing space.
+ if (n != len && (!abbrev || round || n > len
+ || *skipwhite(keys + n) != NUL))
{
- retval = 4; // no mem
- goto theend;
+ mpp = &(mp->m_next);
+ continue;
}
- vim_free(mp->m_str);
- mp->m_str = newstr;
- vim_free(mp->m_orig_str);
- mp->m_orig_str = vim_strsave(orig_rhs);
- mp->m_noremap = noremap;
- mp->m_nowait = nowait;
- mp->m_silent = silent;
- mp->m_mode = mode;
+ // We reset the indicated mode bits. If nothing
+ // is left the entry is deleted below.
+ mp->m_mode &= ~mode;
+ did_it = TRUE; // remember we did something
+ }
+ else if (!hasarg) // show matching entry
+ {
+ if (!mp->m_simplified)
+ {
+ showmap(mp, map_table != maphash);
+ did_it = TRUE;
+ }
+ }
+ else if (n != len) // new entry is ambiguous
+ {
+ mpp = &(mp->m_next);
+ continue;
+ }
+ else if (unique)
+ {
+ if (abbrev)
+ semsg(_(
+ "E226: abbreviation already exists for %s"),
+ p);
+ else
+ semsg(_(
+ "E227: mapping already exists for %s"),
+ p);
+ retval = 5;
+ goto theend;
+ }
+ else
+ {
+ // new rhs for existing entry
+ mp->m_mode &= ~mode; // remove mode bits
+ if (mp->m_mode == 0 && !did_it) // reuse entry
+ {
+ char_u *newstr = vim_strsave(rhs);
+
+ if (newstr == NULL)
+ {
+ retval = 4; // no mem
+ goto theend;
+ }
+ vim_free(mp->m_str);
+ mp->m_str = newstr;
+ vim_free(mp->m_orig_str);
+ mp->m_orig_str = vim_strsave(orig_rhs);
+ mp->m_noremap = noremap;
+ mp->m_nowait = nowait;
+ mp->m_silent = silent;
+ mp->m_mode = mode;
+ mp->m_simplified =
+ did_simplify && keyround == 1;
#ifdef FEAT_EVAL
- mp->m_expr = expr;
- mp->m_script_ctx = current_sctx;
- mp->m_script_ctx.sc_lnum += sourcing_lnum;
+ mp->m_expr = expr;
+ mp->m_script_ctx = current_sctx;
+ mp->m_script_ctx.sc_lnum += sourcing_lnum;
#endif
- did_it = TRUE;
+ did_it = TRUE;
+ }
+ }
+ if (mp->m_mode == 0) // entry can be deleted
+ {
+ map_free(mpp);
+ continue; // continue with *mpp
}
- }
- if (mp->m_mode == 0) // entry can be deleted
- {
- map_free(mpp);
- continue; // continue with *mpp
- }
- // May need to put this entry into another hash list.
- new_hash = MAP_HASH(mp->m_mode, mp->m_keys[0]);
- if (!abbrev && new_hash != hash)
- {
- *mpp = mp->m_next;
- mp->m_next = map_table[new_hash];
- map_table[new_hash] = mp;
+ // May need to put this entry into another hash
+ // list.
+ new_hash = MAP_HASH(mp->m_mode, mp->m_keys[0]);
+ if (!abbrev && new_hash != hash)
+ {
+ *mpp = mp->m_next;
+ mp->m_next = map_table[new_hash];
+ map_table[new_hash] = mp;
- continue; // continue with *mpp
+ continue; // continue with *mpp
+ }
}
}
+ mpp = &(mp->m_next);
}
- mpp = &(mp->m_next);
}
}
- }
- if (maptype == 1) // delete entry
- {
- if (!did_it)
- retval = 2; // no match
- else if (*keys == Ctrl_C)
+ if (maptype == 1)
{
- // If CTRL-C has been unmapped, reuse it for Interrupting.
- if (map_table == curbuf->b_maphash)
- curbuf->b_mapped_ctrl_c &= ~mode;
- else
- mapped_ctrl_c &= ~mode;
+ // delete entry
+ if (!did_it)
+ retval = 2; // no match
+ else if (*keys == Ctrl_C)
+ {
+ // If CTRL-C has been unmapped, reuse it for Interrupting.
+ if (map_table == curbuf->b_maphash)
+ curbuf->b_mapped_ctrl_c &= ~mode;
+ else
+ mapped_ctrl_c &= ~mode;
+ }
+ continue;
}
- goto theend;
- }
- if (!haskey || !hasarg) // print entries
- {
- if (!did_it && !did_local)
+ if (!haskey || !hasarg)
{
- if (abbrev)
- msg(_("No abbreviation found"));
- else
- msg(_("No mapping found"));
+ // print entries
+ if (!did_it && !did_local)
+ {
+ if (abbrev)
+ msg(_("No abbreviation found"));
+ else
+ msg(_("No mapping found"));
+ }
+ goto theend; // listing finished
}
- goto theend; // listing finished
- }
- if (did_it) // have added the new entry already
- goto theend;
+ if (did_it)
+ continue; // have added the new entry already
- // Get here when adding a new entry to the maphash[] list or abbrlist.
- mp = ALLOC_ONE(mapblock_T);
- if (mp == NULL)
- {
- retval = 4; // no mem
- goto theend;
- }
+ // Get here when adding a new entry to the maphash[] list or abbrlist.
+ mp = ALLOC_ONE(mapblock_T);
+ if (mp == NULL)
+ {
+ retval = 4; // no mem
+ goto theend;
+ }
- // If CTRL-C has been mapped, don't always use it for Interrupting.
- if (*keys == Ctrl_C)
- {
- if (map_table == curbuf->b_maphash)
- curbuf->b_mapped_ctrl_c |= mode;
- else
- mapped_ctrl_c |= mode;
- }
+ // If CTRL-C has been mapped, don't always use it for Interrupting.
+ if (*keys == Ctrl_C)
+ {
+ if (map_table == curbuf->b_maphash)
+ curbuf->b_mapped_ctrl_c |= mode;
+ else
+ mapped_ctrl_c |= mode;
+ }
- mp->m_keys = vim_strsave(keys);
- mp->m_str = vim_strsave(rhs);
- mp->m_orig_str = vim_strsave(orig_rhs);
- if (mp->m_keys == NULL || mp->m_str == NULL)
- {
- vim_free(mp->m_keys);
- vim_free(mp->m_str);
- vim_free(mp->m_orig_str);
- vim_free(mp);
- retval = 4; // no mem
- goto theend;
- }
- mp->m_keylen = (int)STRLEN(mp->m_keys);
- mp->m_noremap = noremap;
- mp->m_nowait = nowait;
- mp->m_silent = silent;
- mp->m_mode = mode;
+ mp->m_keys = vim_strsave(keys);
+ mp->m_str = vim_strsave(rhs);
+ mp->m_orig_str = vim_strsave(orig_rhs);
+ if (mp->m_keys == NULL || mp->m_str == NULL)
+ {
+ vim_free(mp->m_keys);
+ vim_free(mp->m_str);
+ vim_free(mp->m_orig_str);
+ vim_free(mp);
+ retval = 4; // no mem
+ goto theend;
+ }
+ mp->m_keylen = (int)STRLEN(mp->m_keys);
+ mp->m_noremap = noremap;
+ mp->m_nowait = nowait;
+ mp->m_silent = silent;
+ mp->m_mode = mode;
+ mp->m_simplified = did_simplify && keyround == 1;
#ifdef FEAT_EVAL
- mp->m_expr = expr;
- mp->m_script_ctx = current_sctx;
- mp->m_script_ctx.sc_lnum += sourcing_lnum;
+ mp->m_expr = expr;
+ mp->m_script_ctx = current_sctx;
+ mp->m_script_ctx.sc_lnum += sourcing_lnum;
#endif
- // add the new entry in front of the abbrlist or maphash[] list
- if (abbrev)
- {
- mp->m_next = *abbr_table;
- *abbr_table = mp;
- }
- else
- {
- n = MAP_HASH(mp->m_mode, mp->m_keys[0]);
- mp->m_next = map_table[n];
- map_table[n] = mp;
+ // add the new entry in front of the abbrlist or maphash[] list
+ if (abbrev)
+ {
+ mp->m_next = *abbr_table;
+ *abbr_table = mp;
+ }
+ else
+ {
+ n = MAP_HASH(mp->m_mode, mp->m_keys[0]);
+ mp->m_next = map_table[n];
+ map_table[n] = mp;
+ }
}
theend:
vim_free(keys_buf);
+ vim_free(alt_keys_buf);
vim_free(arg_buf);
return retval;
}
@@ -934,7 +994,7 @@ map_to_exists(char_u *str, char_u *modechars, int abbr)
char_u *buf;
int retval;
- rhs = replace_termcodes(str, &buf, FALSE, TRUE, FALSE);
+ rhs = replace_termcodes(str, &buf, REPTERM_DO_LT, NULL);
retval = map_to_exists_mode(rhs, mode_str2flags(modechars), abbr);
vim_free(buf);
@@ -1864,7 +1924,7 @@ check_map_keycodes(void)
save_name = sourcing_name;
sourcing_name = (char_u *)"mappings"; // avoids giving error messages
- // This this once for each buffer, and then once for global
+ // Do this once for each buffer, and then once for global
// mappings/abbreviations with bp == NULL
for (bp = firstbuf; ; bp = bp->b_next)
{
@@ -2036,7 +2096,8 @@ get_maparg(typval_T *argvars, typval_T *rettv, int exact)
mode = get_map_mode(&which, 0);
- keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE);
+ keys = replace_termcodes(keys, &keys_buf,
+ REPTERM_FROM_PART | REPTERM_DO_LT, NULL);
rhs = check_map(keys, mode, exact, FALSE, abbr, &mp, &buffer_local);
vim_free(keys_buf);
diff --git a/src/memline.c b/src/memline.c
index c77d1df..32cbb7e 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -804,9 +804,9 @@ ml_open_file(buf_T *buf)
}
}
- if (mfp->mf_fname == NULL) /* Failed! */
+ if (*p_dir != NUL && mfp->mf_fname == NULL)
{
- need_wait_return = TRUE; /* call wait_return later */
+ need_wait_return = TRUE; // call wait_return later
++no_wait_return;
(void)semsg(_("E303: Unable to open swap file for \"%s\", recovery impossible"),
buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname);
@@ -2318,7 +2318,7 @@ swapfile_unchanged(char_u *fname)
ret = FALSE;
#if defined(UNIX) || defined(MSWIN)
- // process must known and not be running
+ // process must be known and not be running
pid = char_to_long(b0.b0_pid);
if (pid == 0L || mch_process_running(pid))
ret = FALSE;
@@ -2663,7 +2663,10 @@ errorret:
/* Avoid giving this message for a recursive call, may happen
* when the GUI redraws part of the text. */
++recursive;
- siemsg(_("E316: ml_get: cannot find line %ld"), lnum);
+ get_trans_bufname(buf);
+ shorten_dir(NameBuff);
+ siemsg(_("E316: ml_get: cannot find line %ld in buffer %d %s"),
+ lnum, buf->b_fnum, NameBuff);
--recursive;
}
goto errorret;
diff --git a/src/menu.c b/src/menu.c
index 4096a05..e55cab6 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -372,7 +372,8 @@ ex_menu(
else if (modes & MENU_TIP_MODE)
map_buf = NULL; /* Menu tips are plain text. */
else
- map_to = replace_termcodes(map_to, &map_buf, FALSE, TRUE, special);
+ map_to = replace_termcodes(map_to, &map_buf,
+ REPTERM_DO_LT | (special ? REPTERM_SPECIAL : 0), NULL);
menuarg.modes = modes;
#ifdef FEAT_TOOLBAR
menuarg.iconfile = icon;
diff --git a/src/message.c b/src/message.c
index dd5f3f5..4a3389c 100644
--- a/src/message.c
+++ b/src/message.c
@@ -356,34 +356,61 @@ int vim_snprintf(char *str, size_t str_m, const char *fmt, ...);
int
smsg(const char *s, ...)
{
- va_list arglist;
+ if (IObuff == NULL)
+ {
+ // Very early in initialisation and already something wrong, just
+ // give the raw message so the user at least gets a hint.
+ return msg((char *)s);
+ }
+ else
+ {
+ va_list arglist;
- va_start(arglist, s);
- vim_vsnprintf((char *)IObuff, IOSIZE, s, arglist);
- va_end(arglist);
- return msg((char *)IObuff);
+ va_start(arglist, s);
+ vim_vsnprintf((char *)IObuff, IOSIZE, s, arglist);
+ va_end(arglist);
+ return msg((char *)IObuff);
+ }
}
int
smsg_attr(int attr, const char *s, ...)
{
- va_list arglist;
+ if (IObuff == NULL)
+ {
+ // Very early in initialisation and already something wrong, just
+ // give the raw message so the user at least gets a hint.
+ return msg_attr((char *)s, attr);
+ }
+ else
+ {
+ va_list arglist;
- va_start(arglist, s);
- vim_vsnprintf((char *)IObuff, IOSIZE, s, arglist);
- va_end(arglist);
- return msg_attr((char *)IObuff, attr);
+ va_start(arglist, s);
+ vim_vsnprintf((char *)IObuff, IOSIZE, s, arglist);
+ va_end(arglist);
+ return msg_attr((char *)IObuff, attr);
+ }
}
int
smsg_attr_keep(int attr, const char *s, ...)
{
- va_list arglist;
+ if (IObuff == NULL)
+ {
+ // Very early in initialisation and already something wrong, just
+ // give the raw message so the user at least gets a hint.
+ return msg_attr_keep((char *)s, attr, TRUE);
+ }
+ else
+ {
+ va_list arglist;
- va_start(arglist, s);
- vim_vsnprintf((char *)IObuff, IOSIZE, s, arglist);
- va_end(arglist);
- return msg_attr_keep((char *)IObuff, attr, TRUE);
+ va_start(arglist, s);
+ vim_vsnprintf((char *)IObuff, IOSIZE, s, arglist);
+ va_end(arglist);
+ return msg_attr_keep((char *)IObuff, attr, TRUE);
+ }
}
#endif
@@ -723,17 +750,26 @@ emsg(char *s)
int
semsg(const char *s, ...)
{
- /* Skip this if not giving error messages at the moment. */
+ // Skip this if not giving error messages at the moment.
if (!emsg_not_now())
{
- va_list ap;
+ if (IObuff == NULL)
+ {
+ // Very early in initialisation and already something wrong, just
+ // give the raw message so the user at least gets a hint.
+ return emsg_core((char_u *)s);
+ }
+ else
+ {
+ va_list ap;
- va_start(ap, s);
- vim_vsnprintf((char *)IObuff, IOSIZE, s, ap);
- va_end(ap);
- return emsg_core(IObuff);
+ va_start(ap, s);
+ vim_vsnprintf((char *)IObuff, IOSIZE, s, ap);
+ va_end(ap);
+ return emsg_core(IObuff);
+ }
}
- return TRUE; /* no error messages at the moment */
+ return TRUE; // no error messages at the moment
}
#endif
@@ -764,12 +800,21 @@ siemsg(const char *s, ...)
{
if (!emsg_not_now())
{
- va_list ap;
+ if (IObuff == NULL)
+ {
+ // Very early in initialisation and already something wrong, just
+ // give the raw message so the user at least gets a hint.
+ emsg_core((char_u *)s);
+ }
+ else
+ {
+ va_list ap;
- va_start(ap, s);
- vim_vsnprintf((char *)IObuff, IOSIZE, s, ap);
- va_end(ap);
- emsg_core(IObuff);
+ va_start(ap, s);
+ vim_vsnprintf((char *)IObuff, IOSIZE, s, ap);
+ va_end(ap);
+ emsg_core(IObuff);
+ }
}
# ifdef ABORT_ON_INTERNAL_ERROR
abort();
@@ -1155,7 +1200,6 @@ wait_return(int redraw)
#ifdef FEAT_GUI
|| c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR
#endif
-#ifdef FEAT_MOUSE
|| c == K_LEFTDRAG || c == K_LEFTRELEASE
|| c == K_MIDDLEDRAG || c == K_MIDDLERELEASE
|| c == K_RIGHTDRAG || c == K_RIGHTRELEASE
@@ -1169,19 +1213,15 @@ wait_return(int redraw)
|| c == K_RIGHTMOUSE
|| c == K_X1MOUSE
|| c == K_X2MOUSE))
-#endif
);
ui_breakcheck();
-#ifdef FEAT_MOUSE
/*
* Avoid that the mouse-up event causes visual mode to start.
*/
if (c == K_LEFTMOUSE || c == K_MIDDLEMOUSE || c == K_RIGHTMOUSE
|| c == K_X1MOUSE || c == K_X2MOUSE)
(void)jump_to_mouse(MOUSE_SETPOS, NULL, 0);
- else
-#endif
- if (vim_strchr((char_u *)"\r\n ", c) == NULL && c != Ctrl_C)
+ else if (vim_strchr((char_u *)"\r\n ", c) == NULL && c != Ctrl_C)
{
/* Put the character back in the typeahead buffer. Don't use the
* stuff buffer, because lmaps wouldn't work. */
@@ -1576,7 +1616,7 @@ msg_make(char_u *arg)
msg_outtrans_special(
char_u *strstart,
int from, // TRUE for lhs of a mapping
- int maxlen) // screen columns, 0 for unlimeted
+ int maxlen) // screen columns, 0 for unlimited
{
char_u *str = strstart;
int retval = 0;
@@ -1980,15 +2020,14 @@ msg_puts_attr_len(char *str, int maxlen, int attr)
attr &= ~MSG_HIST;
}
- /*
- * When writing something to the screen after it has scrolled, requires a
- * wait-return prompt later. Needed when scrolling, resetting
- * need_wait_return after some prompt, and then outputting something
- * without scrolling
- */
- if (msg_scrolled != 0 && !msg_scrolled_ign)
+ // When writing something to the screen after it has scrolled, requires a
+ // wait-return prompt later. Needed when scrolling, resetting
+ // need_wait_return after some prompt, and then outputting something
+ // without scrolling
+ // Not needed when only using CR to move the cursor.
+ if (msg_scrolled != 0 && !msg_scrolled_ign && STRCMP(str, "\r") != 0)
need_wait_return = TRUE;
- msg_didany = TRUE; /* remember that something was outputted */
+ msg_didany = TRUE; // remember that something was outputted
/*
* If there is no valid screen, use fprintf so we can see error messages.
@@ -3507,8 +3546,17 @@ give_warning(char_u *message, int hl)
void
give_warning2(char_u *message, char_u *a1, int hl)
{
- vim_snprintf((char *)IObuff, IOSIZE, (char *)message, a1);
- give_warning(IObuff, hl);
+ if (IObuff == NULL)
+ {
+ // Very early in initialisation and already something wrong, just give
+ // the raw message so the user at least gets a hint.
+ give_warning((char_u *)message, hl);
+ }
+ else
+ {
+ vim_snprintf((char *)IObuff, IOSIZE, (char *)message, a1);
+ give_warning(IObuff, hl);
+ }
}
#endif
diff --git a/src/misc1.c b/src/misc1.c
index d359ffd..74c8eaa 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -847,9 +847,7 @@ get_keystroke(void)
n = TO_SPECIAL(buf[1], buf[2]);
if (buf[1] == KS_MODIFIER
|| n == K_IGNORE
-#ifdef FEAT_MOUSE
|| (is_mouse_key(n) && n != K_LEFTMOUSE)
-#endif
#ifdef FEAT_GUI
|| n == K_VER_SCROLLBAR
|| n == K_HOR_SCROLLBAR
@@ -929,14 +927,12 @@ get_number(
}
n /= 10;
}
-#ifdef FEAT_MOUSE
else if (mouse_used != NULL && c == K_LEFTMOUSE)
{
*mouse_used = TRUE;
n = mouse_row + 1;
break;
}
-#endif
else if (n == 0 && c == ':' && colon)
{
stuffcharReadbuff(':');
@@ -2580,3 +2576,34 @@ path_with_url(char_u *fname)
;
return path_is_url(p);
}
+
+/*
+ * Put timestamp "tt" in "buf[buflen]" in a nice format.
+ */
+ void
+add_time(char_u *buf, size_t buflen, time_t tt)
+{
+#ifdef HAVE_STRFTIME
+ struct tm tmval;
+ struct tm *curtime;
+
+ if (vim_time() - tt >= 100)
+ {
+ curtime = vim_localtime(&tt, &tmval);
+ if (vim_time() - tt < (60L * 60L * 12L))
+ /* within 12 hours */
+ (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
+ else
+ /* longer ago */
+ (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime);
+ }
+ else
+#endif
+ {
+ long seconds = (long)(vim_time() - tt);
+
+ vim_snprintf((char *)buf, buflen,
+ NGETTEXT("%ld second ago", "%ld seconds ago", seconds),
+ seconds);
+ }
+}
diff --git a/src/misc2.c b/src/misc2.c
index da274e6..67fa8b5 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -119,10 +119,11 @@ getvpos(pos_T *pos, colnr_T wcol)
static int
coladvance2(
pos_T *pos,
- int addspaces, /* change the text to achieve our goal? */
- int finetune, /* change char offset for the exact column */
- colnr_T wcol) /* column to move to */
+ int addspaces, // change the text to achieve our goal?
+ int finetune, // change char offset for the exact column
+ colnr_T wcol_arg) // column to move to (can be negative)
{
+ colnr_T wcol = wcol_arg;
int idx;
char_u *ptr;
char_u *line;
@@ -136,7 +137,7 @@ coladvance2(
one_more = (State & INSERT)
|| restart_edit != NUL
|| (VIsual_active && *p_sel != 'o')
- || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL) ;
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL);
line = ml_get_buf(curbuf, pos->lnum, FALSE);
if (wcol >= MAXCOL)
@@ -206,6 +207,7 @@ coladvance2(
if (virtual_active()
&& addspaces
+ && wcol >= 0
&& ((col != wcol && col != wcol + 1) || csize > 1))
{
/* 'virtualedit' is set: The difference between wcol and col is
@@ -305,7 +307,7 @@ coladvance2(
if (has_mbyte)
mb_adjustpos(curbuf, pos);
- if (col < wcol)
+ if (wcol < 0 || col < wcol)
return FAIL;
return OK;
}
@@ -2694,12 +2696,15 @@ trans_special(
char_u **srcp,
char_u *dst,
int keycode, // prefer key code, e.g. K_DEL instead of DEL
- int in_string) // TRUE when inside a double quoted string
+ int in_string, // TRUE when inside a double quoted string
+ int simplify, // simplify <C-H> and <A-x>
+ int *did_simplify) // found <C-H> or <A-x>
{
int modifiers = 0;
int key;
- key = find_special_key(srcp, &modifiers, keycode, FALSE, in_string);
+ key = find_special_key(srcp, &modifiers, keycode, FALSE, in_string,
+ simplify, did_simplify);
if (key == 0)
return 0;
@@ -2751,9 +2756,11 @@ special_to_buf(int key, int modifiers, int keycode, char_u *dst)
find_special_key(
char_u **srcp,
int *modp,
- int keycode, /* prefer key code, e.g. K_DEL instead of DEL */
- int keep_x_key, /* don't translate xHome to Home key */
- int in_string) /* TRUE in string, double quote is escaped */
+ int keycode, // prefer key code, e.g. K_DEL instead of DEL
+ int keep_x_key, // don't translate xHome to Home key
+ int in_string, // TRUE in string, double quote is escaped
+ int simplify, // simplify <C-H> and <A-x>
+ int *did_simplify) // found <C-H> or <A-x>
{
char_u *last_dash;
char_u *end_of_name;
@@ -2833,7 +2840,8 @@ find_special_key(
&& VIM_ISDIGIT(last_dash[6]))
{
/* <Char-123> or <Char-033> or <Char-0x33> */
- vim_str2nr(last_dash + 6, NULL, &l, STR2NR_ALL, NULL, &n, 0, TRUE);
+ vim_str2nr(last_dash + 6, NULL, &l, STR2NR_ALL, NULL,
+ &n, 0, TRUE);
if (l == 0)
{
emsg(_(e_invarg));
@@ -2883,11 +2891,10 @@ find_special_key(
key = DEL;
}
- /*
- * Normal Key with modifier: Try to make a single byte code.
- */
+ // Normal Key with modifier: Try to make a single byte code.
if (!IS_SPECIAL(key))
- key = extract_modifiers(key, &modifiers);
+ key = extract_modifiers(key, &modifiers,
+ simplify, did_simplify);
*modp = modifiers;
*srcp = end_of_name;
@@ -2901,26 +2908,37 @@ find_special_key(
/*
* Try to include modifiers in the key.
* Changes "Shift-a" to 'A', "Alt-A" to 0xc0, etc.
+ * When "simplify" is FALSE don't do Ctrl and Alt.
+ * When "simplify" is TRUE and Ctrl or Alt is removed from modifiers set
+ * "did_simplify" when it's not NULL.
*/
int
-extract_modifiers(int key, int *modp)
+extract_modifiers(int key, int *modp, int simplify, int *did_simplify)
{
int modifiers = *modp;
#ifdef MACOS_X
- /* Command-key really special, no fancynest */
+ // Command-key really special, no fancynest
if (!(modifiers & MOD_MASK_CMD))
#endif
if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key))
{
key = TOUPPER_ASC(key);
- modifiers &= ~MOD_MASK_SHIFT;
+ // With <C-S-a> and <A-S-a> we keep the shift modifier.
+ // With <S-a> and <S-A> we don't keep the shift modifier.
+ if (simplify || modifiers == MOD_MASK_SHIFT)
+ modifiers &= ~MOD_MASK_SHIFT;
}
- if ((modifiers & MOD_MASK_CTRL)
+
+ // <C-H> and <C-h> mean the same thing, always use "H"
+ if ((modifiers & MOD_MASK_CTRL) && ASCII_ISALPHA(key))
+ key = TOUPPER_ASC(key);
+
+ if (simplify && (modifiers & MOD_MASK_CTRL)
#ifdef EBCDIC
- /* * TODO: EBCDIC Better use:
- * && (Ctrl_chr(key) || key == '?')
- * ??? */
+ // TODO: EBCDIC Better use:
+ // && (Ctrl_chr(key) || key == '?')
+ // ???
&& strchr("?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", key)
!= NULL
#else
@@ -2933,16 +2951,21 @@ extract_modifiers(int key, int *modp)
/* <C-@> is <Nul> */
if (key == 0)
key = K_ZERO;
+ if (did_simplify != NULL)
+ *did_simplify = TRUE;
}
+
#ifdef MACOS_X
/* Command-key really special, no fancynest */
if (!(modifiers & MOD_MASK_CMD))
#endif
- if ((modifiers & MOD_MASK_ALT) && key < 0x80
+ if (simplify && (modifiers & MOD_MASK_ALT) && key < 0x80
&& !enc_dbcs) // avoid creating a lead byte
{
key |= 0x80;
modifiers &= ~MOD_MASK_ALT; /* remove the META modifier */
+ if (did_simplify != NULL)
+ *did_simplify = TRUE;
}
*modp = modifiers;
diff --git a/src/mouse.c b/src/mouse.c
index 498ff04..b71ef37 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -13,8 +13,6 @@
#include "vim.h"
-#if defined(FEAT_MOUSE) || defined(PROTO)
-
/*
* Get class of a character for selection: same class means same word.
* 0: blank
@@ -1258,20 +1256,17 @@ get_pseudo_mouse_code(
return (int)KE_IGNORE; // not recognized, ignore it
}
-# ifdef FEAT_MOUSE_TTY
-# define HMT_NORMAL 1
-# define HMT_NETTERM 2
-# define HMT_DEC 4
-# define HMT_JSBTERM 8
-# define HMT_PTERM 16
-# define HMT_URXVT 32
-# define HMT_GPM 64
-# define HMT_SGR 128
-# define HMT_SGR_REL 256
+# define HMT_NORMAL 1
+# define HMT_NETTERM 2
+# define HMT_DEC 4
+# define HMT_JSBTERM 8
+# define HMT_PTERM 16
+# define HMT_URXVT 32
+# define HMT_GPM 64
+# define HMT_SGR 128
+# define HMT_SGR_REL 256
static int has_mouse_termcode = 0;
-# endif
-# if (!defined(UNIX) || defined(FEAT_MOUSE_TTY)) || defined(PROTO)
void
set_mouse_termcode(
int n, // KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE
@@ -1282,7 +1277,6 @@ set_mouse_termcode(
name[0] = n;
name[1] = KE_FILLER;
add_termcode(name, s, FALSE);
-# ifdef FEAT_MOUSE_TTY
# ifdef FEAT_MOUSE_JSB
if (n == KS_JSBTERM_MOUSE)
has_mouse_termcode |= HMT_JSBTERM;
@@ -1319,12 +1313,9 @@ set_mouse_termcode(
has_mouse_termcode |= HMT_SGR_REL;
else
has_mouse_termcode |= HMT_NORMAL;
-# endif
}
-# endif
-# if ((defined(UNIX) || defined(VMS)) \
- && defined(FEAT_MOUSE_TTY)) || defined(PROTO)
+# if defined(UNIX) || defined(VMS) || defined(PROTO)
void
del_mouse_termcode(
int n) // KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE
@@ -1334,7 +1325,6 @@ del_mouse_termcode(
name[0] = n;
name[1] = KE_FILLER;
del_termcode(name);
-# ifdef FEAT_MOUSE_TTY
# ifdef FEAT_MOUSE_JSB
if (n == KS_JSBTERM_MOUSE)
has_mouse_termcode &= ~HMT_JSBTERM;
@@ -1371,7 +1361,6 @@ del_mouse_termcode(
has_mouse_termcode &= ~HMT_SGR_REL;
else
has_mouse_termcode &= ~HMT_NORMAL;
-# endif
}
# endif
@@ -1381,15 +1370,13 @@ del_mouse_termcode(
void
setmouse(void)
{
-# ifdef FEAT_MOUSE_TTY
int checkfor;
-# endif
# ifdef FEAT_MOUSESHAPE
update_mouseshape(-1);
# endif
-# ifdef FEAT_MOUSE_TTY // Should be outside proc, but may break MOUSESHAPE
+ // Should be outside proc, but may break MOUSESHAPE
# ifdef FEAT_GUI
// In the GUI the mouse is always enabled.
if (gui.in_use)
@@ -1423,7 +1410,6 @@ setmouse(void)
mch_setmouse(TRUE);
else
mch_setmouse(FALSE);
-# endif
}
/*
@@ -2289,7 +2275,7 @@ check_termcode_mouse(
# endif
)
{
-# if defined(UNIX) && defined(FEAT_MOUSE_TTY)
+# if defined(UNIX)
if (use_xterm_mouse() > 1 && mouse_code >= 0x80)
// mouse-move event, using MOUSE_DRAG works
mouse_code = MOUSE_DRAG;
@@ -2314,7 +2300,7 @@ check_termcode_mouse(
}
# endif
-# if defined(UNIX) && defined(FEAT_MOUSE_TTY)
+# if defined(UNIX)
else if (use_xterm_mouse() > 1)
{
if (mouse_code & MOUSE_DRAG_XTERM)
@@ -2810,10 +2796,8 @@ check_termcode_mouse(
return 0;
}
-#endif // FEAT_MOUSE
// Functions also used for popup windows.
-#if defined(FEAT_MOUSE) || defined(FEAT_TEXT_PROP) || defined(PROTO)
/*
* Compute the buffer line position from the screen position "rowp" / "colp" in
@@ -3017,15 +3001,3 @@ vcol2col(win_T *wp, linenr_T lnum, int vcol)
return (int)(ptr - line);
}
#endif
-
-#else // FEAT_MOUSE
-
-/*
- * Dummy implementation of setmouse() to avoid lots of #ifdefs.
- */
- void
-setmouse(void)
-{
-}
-
-#endif // FEAT_MOUSE
diff --git a/src/move.c b/src/move.c
index 223ed54..d6b1c26 100644
--- a/src/move.c
+++ b/src/move.c
@@ -190,9 +190,7 @@ update_topline(void)
int check_topline = FALSE;
int check_botline = FALSE;
long *so_ptr = curwin->w_p_so >= 0 ? &curwin->w_p_so : &p_so;
-#ifdef FEAT_MOUSE
int save_so = *so_ptr;
-#endif
/* If there is no valid screen and when the window height is zero just use
* the cursor line. */
@@ -209,11 +207,9 @@ update_topline(void)
if (curwin->w_valid & VALID_TOPLINE)
return;
-#ifdef FEAT_MOUSE
/* When dragging with the mouse, don't scroll that quickly */
if (mouse_dragging > 0)
*so_ptr = mouse_dragging - 1;
-#endif
old_topline = curwin->w_topline;
#ifdef FEAT_DIFF
@@ -418,9 +414,7 @@ update_topline(void)
validate_cursor();
}
-#ifdef FEAT_MOUSE
*so_ptr = save_so;
-#endif
}
/*
@@ -1223,7 +1217,7 @@ textpos2screenpos(
col -= rowoff * width;
}
col -= wp->w_leftcol;
- if (col >= width)
+ if (col >= wp->w_width)
col = -1;
if (col >= 0)
coloff = col - scol + wp->w_wincol + 1;
@@ -1751,10 +1745,8 @@ scroll_cursor_top(int min_scroll, int always)
linenr_T new_topline;
int off = get_scrolloff_value();
-#ifdef FEAT_MOUSE
if (mouse_dragging > 0)
off = mouse_dragging - 1;
-#endif
/*
* Decrease topline until:
@@ -2004,11 +1996,7 @@ scroll_cursor_bot(int min_scroll, int set_topbot)
/* Stop when scrolled nothing or at least "min_scroll", found "extra"
* context for 'scrolloff' and counted all lines below the window. */
if ((((scrolled <= 0 || scrolled >= min_scroll)
- && extra >= (
-#ifdef FEAT_MOUSE
- mouse_dragging > 0 ? mouse_dragging - 1 :
-#endif
- so))
+ && extra >= (mouse_dragging > 0 ? mouse_dragging - 1 : so))
|| boff.lnum + 1 > curbuf->b_ml.ml_line_count)
&& loff.lnum <= curwin->w_botline
#ifdef FEAT_DIFF
@@ -2050,11 +2038,8 @@ scroll_cursor_bot(int min_scroll, int set_topbot)
used += boff.height;
if (used > curwin->w_height)
break;
- if (extra < (
-#ifdef FEAT_MOUSE
- mouse_dragging > 0 ? mouse_dragging - 1 :
-#endif
- so) || scrolled < min_scroll)
+ if (extra < ( mouse_dragging > 0 ? mouse_dragging - 1 : so)
+ || scrolled < min_scroll)
{
extra += boff.height;
if (boff.lnum >= curwin->w_botline
@@ -2230,13 +2215,11 @@ cursor_correct(void)
*/
above_wanted = so;
below_wanted = so;
-#ifdef FEAT_MOUSE
if (mouse_dragging > 0)
{
above_wanted = mouse_dragging - 1;
below_wanted = mouse_dragging - 1;
}
-#endif
if (curwin->w_topline == 1)
{
above_wanted = 0;
@@ -2246,10 +2229,7 @@ cursor_correct(void)
}
validate_botline();
if (curwin->w_botline == curbuf->b_ml.ml_line_count + 1
-#ifdef FEAT_MOUSE
- && mouse_dragging == 0
-#endif
- )
+ && mouse_dragging == 0)
{
below_wanted = 0;
max_off = (curwin->w_height - 1) / 2;
diff --git a/src/netbeans.c b/src/netbeans.c
index 9a34460..98714d3 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -2977,16 +2977,16 @@ netbeans_deleted_all_lines(buf_T *bufp)
int
netbeans_is_guarded(linenr_T top, linenr_T bot)
{
- signlist_T *p;
- int lnum;
+ sign_entry_T *p;
+ int lnum;
if (!NETBEANS_OPEN)
return FALSE;
- for (p = curbuf->b_signlist; p != NULL; p = p->next)
- if (p->id >= GUARDEDOFFSET)
+ for (p = curbuf->b_signlist; p != NULL; p = p->se_next)
+ if (p->se_id >= GUARDEDOFFSET)
for (lnum = top + 1; lnum < bot; lnum++)
- if (lnum == p->lnum)
+ if (lnum == p->se_lnum)
return TRUE;
return FALSE;
@@ -3091,36 +3091,36 @@ netbeans_draw_multisign_indicator(int row)
void
netbeans_gutter_click(linenr_T lnum)
{
- signlist_T *p;
+ sign_entry_T *p;
if (!NETBEANS_OPEN)
return;
- for (p = curbuf->b_signlist; p != NULL; p = p->next)
+ for (p = curbuf->b_signlist; p != NULL; p = p->se_next)
{
- if (p->lnum == lnum && p->next && p->next->lnum == lnum)
+ if (p->se_lnum == lnum && p->se_next && p->se_next->se_lnum == lnum)
{
- signlist_T *tail;
+ sign_entry_T *tail;
/* remove "p" from list, reinsert it at the tail of the sublist */
- if (p->prev)
- p->prev->next = p->next;
+ if (p->se_prev)
+ p->se_prev->se_next = p->se_next;
else
- curbuf->b_signlist = p->next;
- p->next->prev = p->prev;
+ curbuf->b_signlist = p->se_next;
+ p->se_next->se_prev = p->se_prev;
/* now find end of sublist and insert p */
- for (tail = p->next;
- tail->next && tail->next->lnum == lnum
- && tail->next->id < GUARDEDOFFSET;
- tail = tail->next)
+ for (tail = p->se_next;
+ tail->se_next && tail->se_next->se_lnum == lnum
+ && tail->se_next->se_id < GUARDEDOFFSET;
+ tail = tail->se_next)
;
/* tail now points to last entry with same lnum (except
* that "guarded" annotations are always last) */
- p->next = tail->next;
- if (tail->next)
- tail->next->prev = p;
- p->prev = tail;
- tail->next = p;
+ p->se_next = tail->se_next;
+ if (tail->se_next)
+ tail->se_next->se_prev = p;
+ p->se_prev = tail;
+ tail->se_next = p;
update_debug_sign(curbuf, lnum);
break;
}
diff --git a/src/normal.c b/src/normal.c
index 1fddeae..c20c072 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -65,7 +65,7 @@ static void nv_end(cmdarg_T *cap);
static void nv_dollar(cmdarg_T *cap);
static void nv_search(cmdarg_T *cap);
static void nv_next(cmdarg_T *cap);
-static int normal_search(cmdarg_T *cap, int dir, char_u *pat, int opt);
+static int normal_search(cmdarg_T *cap, int dir, char_u *pat, int opt, int *wrapped);
static void nv_csearch(cmdarg_T *cap);
static void nv_brackets(cmdarg_T *cap);
static void nv_percent(cmdarg_T *cap);
@@ -303,7 +303,6 @@ static const struct nv_cmd
/* pound sign */
{POUND, nv_ident, 0, 0},
-#ifdef FEAT_MOUSE
{K_MOUSEUP, nv_mousescroll, 0, MSCR_UP},
{K_MOUSEDOWN, nv_mousescroll, 0, MSCR_DOWN},
{K_MOUSELEFT, nv_mousescroll, 0, MSCR_LEFT},
@@ -326,7 +325,6 @@ static const struct nv_cmd
{K_X2MOUSE, nv_mouse, 0, 0},
{K_X2DRAG, nv_mouse, 0, 0},
{K_X2RELEASE, nv_mouse, 0, 0},
-#endif
{K_IGNORE, nv_ignore, NV_KEEPREG, 0},
{K_NOP, nv_nop, 0, 0},
{K_INS, nv_edit, 0, 0},
@@ -872,13 +870,13 @@ getcount:
*/
if (cp != NULL)
{
-#ifdef CURSOR_SHAPE
if (repl)
{
State = REPLACE; /* pretend Replace mode */
+#ifdef CURSOR_SHAPE
ui_cursor_shape(); /* show different cursor shape */
- }
#endif
+ }
if (lang && curbuf->b_p_iminsert == B_IMODE_LMAP)
{
/* Allow mappings defined with ":lmap". */
@@ -915,9 +913,7 @@ getcount:
}
p_smd = save_smd;
#endif
-#ifdef CURSOR_SHAPE
State = NORMAL_BUSY;
-#endif
#ifdef FEAT_CMDL_INFO
need_flushbuf |= add_to_showcmd(*cp);
#endif
@@ -1319,10 +1315,8 @@ end_visual_mode(void)
#endif
VIsual_active = FALSE;
-#ifdef FEAT_MOUSE
setmouse();
mouse_dragging = 0;
-#endif
/* Save the current VIsual area for '< and '> marks, and "gv" */
curbuf->b_visual.vi_mode = VIsual_mode;
@@ -1849,14 +1843,13 @@ add_to_showcmd(int c)
int old_len;
int extra_len;
int overflow;
-#if defined(FEAT_MOUSE)
int i;
static int ignore[] =
{
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
K_VER_SCROLLBAR, K_HOR_SCROLLBAR,
K_LEFTMOUSE_NM, K_LEFTRELEASE_NM,
-# endif
+#endif
K_IGNORE, K_PS,
K_LEFTMOUSE, K_LEFTDRAG, K_LEFTRELEASE, K_MOUSEMOVE,
K_MIDDLEMOUSE, K_MIDDLEDRAG, K_MIDDLERELEASE,
@@ -1866,7 +1859,6 @@ add_to_showcmd(int c)
K_CURSORHOLD,
0
};
-#endif
if (!p_sc || msg_silent != 0)
return FALSE;
@@ -1877,13 +1869,11 @@ add_to_showcmd(int c)
showcmd_visual = FALSE;
}
-#if defined(FEAT_MOUSE)
/* Ignore keys that are scrollbar updates and mouse clicks */
if (IS_SPECIAL(c))
for (i = 0; ignore[i] != 0; ++i)
if (ignore[i] == c)
return FALSE;
-#endif
p = transchar(c);
if (*p == ' ')
@@ -2354,7 +2344,7 @@ find_decl(
for (;;)
{
t = searchit(curwin, curbuf, &curwin->w_cursor, NULL, FORWARD,
- pat, 1L, searchflags, RE_LAST, (linenr_T)0, NULL, NULL);
+ pat, 1L, searchflags, RE_LAST, NULL);
if (curwin->w_cursor.lnum >= old_pos.lnum)
t = FAIL; /* match after start is failure too */
@@ -2499,17 +2489,18 @@ nv_screengo(oparg_T *oap, int dir, long dist)
n = ((linelen - width1 - 1) / width2 + 1) * width2 + width1;
else
n = width1;
- if (curwin->w_curswant > (colnr_T)n + 1)
- curwin->w_curswant -= ((curwin->w_curswant - n) / width2 + 1)
- * width2;
+ if (curwin->w_curswant >= (colnr_T)n)
+ curwin->w_curswant = n - 1;
}
while (dist--)
{
if (dir == BACKWARD)
{
- if ((long)curwin->w_curswant > width2)
- // move back within line
+ if ((long)curwin->w_curswant >= width1)
+ // Move back within the line. This can give a negative value
+ // for w_curswant if width1 < width2 (with cpoptions+=n),
+ // which will get clipped to column 0.
curwin->w_curswant -= width2;
else
{
@@ -2557,6 +2548,12 @@ nv_screengo(oparg_T *oap, int dir, long dist)
}
curwin->w_cursor.lnum++;
curwin->w_curswant %= width2;
+ // Check if the cursor has moved below the number display
+ // when width1 < width2 (with cpoptions+=n). Subtract width2
+ // to get a negative value for w_curswant, which will get
+ // clipped to column 0.
+ if (curwin->w_curswant >= width1)
+ curwin->w_curswant -= width2;
linelen = linetabsize(ml_get_curline());
}
}
@@ -3731,7 +3728,7 @@ nv_ident(cmdarg_T *cap)
init_history();
add_to_history(HIST_SEARCH, buf, TRUE, NUL);
- (void)normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0);
+ (void)normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0, NULL);
}
else
{
@@ -4258,7 +4255,7 @@ nv_search(cmdarg_T *cap)
(void)normal_search(cap, cap->cmdchar, cap->searchbuf,
(cap->arg || !EQUAL_POS(save_cursor, curwin->w_cursor))
- ? 0 : SEARCH_MARK);
+ ? 0 : SEARCH_MARK, NULL);
}
/*
@@ -4268,16 +4265,17 @@ nv_search(cmdarg_T *cap)
static void
nv_next(cmdarg_T *cap)
{
- pos_T old = curwin->w_cursor;
- int i = normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg);
+ pos_T old = curwin->w_cursor;
+ int wrapped = FALSE;
+ int i = normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg, &wrapped);
- if (i == 1 && EQUAL_POS(old, curwin->w_cursor))
+ if (i == 1 && !wrapped && EQUAL_POS(old, curwin->w_cursor))
{
/* Avoid getting stuck on the current cursor position, which can
* happen when an offset is given and the cursor is on the last char
* in the buffer: Repeat with count + 1. */
cap->count1 += 1;
- (void)normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg);
+ (void)normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg, NULL);
cap->count1 -= 1;
}
}
@@ -4292,17 +4290,22 @@ normal_search(
cmdarg_T *cap,
int dir,
char_u *pat,
- int opt) /* extra flags for do_search() */
+ int opt, // extra flags for do_search()
+ int *wrapped)
{
int i;
+ searchit_arg_T sia;
cap->oap->motion_type = MCHAR;
cap->oap->inclusive = FALSE;
cap->oap->use_reg_one = TRUE;
curwin->w_set_curswant = TRUE;
+ vim_memset(&sia, 0, sizeof(sia));
i = do_search(cap->oap, dir, pat, cap->count1,
- opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, NULL, NULL);
+ opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, &sia);
+ if (wrapped != NULL)
+ *wrapped = sia.sa_wrapped;
if (i == 0)
clearop(cap->oap);
else
@@ -4618,7 +4621,6 @@ nv_brackets(cmdarg_T *cap)
nv_cursormark(cap, cap->nchar == '\'', pos);
}
-#ifdef FEAT_MOUSE
/*
* [ or ] followed by a middle mouse click: put selected text with
* indent adjustment. Any other button just does as usual.
@@ -4629,7 +4631,6 @@ nv_brackets(cmdarg_T *cap)
(cap->cmdchar == ']') ? FORWARD : BACKWARD,
cap->count1, PUT_FIXINDENT);
}
-#endif /* FEAT_MOUSE */
#ifdef FEAT_FOLDING
/*
@@ -5976,6 +5977,24 @@ nv_g_cmd(cmdarg_T *cap)
curwin->w_set_curswant = TRUE;
break;
+ case 'M':
+ {
+ char_u *ptr = ml_get_curline();
+
+ oap->motion_type = MCHAR;
+ oap->inclusive = FALSE;
+ if (has_mbyte)
+ i = mb_string2cells(ptr, (int)STRLEN(ptr));
+ else
+ i = (int)STRLEN(ptr);
+ if (cap->count0 > 0 && cap->count0 <= 100)
+ coladvance((colnr_T)(i * cap->count0 / 100));
+ else
+ coladvance((colnr_T)(i / 2));
+ curwin->w_set_curswant = TRUE;
+ }
+ break;
+
case '_':
/* "g_": to the last non-blank character in the line or <count> lines
* downward. */
@@ -6213,7 +6232,6 @@ nv_g_cmd(cmdarg_T *cap)
nv_gd(oap, cap->nchar, (int)cap->count0);
break;
-#ifdef FEAT_MOUSE
/*
* g<*Mouse> : <C-*mouse>
*/
@@ -6236,7 +6254,6 @@ nv_g_cmd(cmdarg_T *cap)
mod_mask = MOD_MASK_CTRL;
(void)do_mouse(oap, cap->nchar, BACKWARD, cap->count1, 0);
break;
-#endif
case K_IGNORE:
break;
diff --git a/src/ops.c b/src/ops.c
index a008a9d..42b0dcb 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -912,6 +912,8 @@ op_delete(oparg_T *oap)
oap->end = curwin->w_cursor;
curwin->w_cursor = oap->start;
}
+ if (has_mbyte)
+ mb_adjust_opend(oap);
}
if (oap->line_count == 1) /* delete characters within one line */
@@ -4369,10 +4371,8 @@ do_pending_operator(cmdarg_T *cap, int old_col, int gui_yank)
if (!gui_yank)
{
VIsual_active = FALSE;
-#ifdef FEAT_MOUSE
setmouse();
mouse_dragging = 0;
-#endif
may_clear_cmdline();
if ((oap->op_type == OP_YANK
|| oap->op_type == OP_COLON
diff --git a/src/option.c b/src/option.c
index 60c1141..935ee2d 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4495,7 +4495,7 @@ find_key_option(char_u *arg_arg, int has_lt)
{
--arg; /* put arg at the '<' */
modifiers = 0;
- key = find_special_key(&arg, &modifiers, TRUE, TRUE, FALSE);
+ key = find_special_key(&arg, &modifiers, TRUE, TRUE, FALSE, TRUE, NULL);
if (modifiers) /* can't handle modifiers here */
key = 0;
}
@@ -4877,7 +4877,7 @@ put_setstring(
home_replace(NULL, *valuep, buf, size, FALSE);
// If the option value is longer than MAXPATHL, we need to append
- // earch comma separated part of the option separately, so that it
+ // each comma separated part of the option separately, so that it
// can be expanded when read back.
if (size >= MAXPATHL && (flags & P_COMMA) != 0
&& vim_strchr(*valuep, ',') != NULL)
@@ -4976,9 +4976,7 @@ clear_termoptions(void)
* outputting a few things that the terminal doesn't understand, but the
* screen will be cleared later, so this is OK.
*/
-#ifdef FEAT_MOUSE_TTY
- mch_setmouse(FALSE); /* switch mouse off */
-#endif
+ mch_setmouse(FALSE); // switch mouse off
#ifdef FEAT_TITLE
mch_restore_title(SAVE_RESTORE_BOTH); /* restore window titles */
#endif
@@ -5643,6 +5641,12 @@ copy_winopt(winopt_T *from, winopt_T *to)
#ifdef FEAT_SIGNS
to->wo_scl = vim_strsave(from->wo_scl);
#endif
+
+#ifdef FEAT_EVAL
+ // Copy the script context so that we know where the value was last set.
+ mch_memmove(to->wo_script_ctx, from->wo_script_ctx,
+ sizeof(to->wo_script_ctx));
+#endif
check_winopt(to); /* don't want NULL pointers */
}
@@ -5740,11 +5744,36 @@ clear_winopt(winopt_T *wop UNUSED)
#endif
}
+#ifdef FEAT_EVAL
+// Index into the options table for a buffer-local option enum.
+static int buf_opt_idx[BV_COUNT];
+# define COPY_OPT_SCTX(buf, bv) buf->b_p_script_ctx[bv] = options[buf_opt_idx[bv]].script_ctx
+
+/*
+ * Initialize buf_opt_idx[] if not done already.
+ */
+ static void
+init_buf_opt_idx(void)
+{
+ static int did_init_buf_opt_idx = FALSE;
+ int i;
+
+ if (did_init_buf_opt_idx)
+ return;
+ did_init_buf_opt_idx = TRUE;
+ for (i = 0; !istermoption_idx(i); i++)
+ if (options[i].indir & PV_BUF)
+ buf_opt_idx[options[i].indir & PV_MASK] = i;
+}
+#else
+# define COPY_OPT_SCTX(buf, bv)
+#endif
+
/*
* Copy global option values to local options for one buffer.
* Used when creating a new buffer and sometimes when entering a buffer.
* flags:
- * BCO_ENTER We will enter the buf buffer.
+ * BCO_ENTER We will enter the buffer "buf".
* BCO_ALWAYS Always copy the options, but only set b_p_initialized when
* appropriate.
* BCO_NOHELP Don't copy the values to a help buffer.
@@ -5783,12 +5812,16 @@ buf_copy_options(buf_T *buf, int flags)
if (should_copy || (flags & BCO_ALWAYS))
{
- /* Don't copy the options specific to a help buffer when
- * BCO_NOHELP is given or the options were initialized already
- * (jumping back to a help file with CTRL-T or CTRL-O) */
+#ifdef FEAT_EVAL
+ vim_memset(buf->b_p_script_ctx, 0, sizeof(buf->b_p_script_ctx));
+ init_buf_opt_idx();
+#endif
+ // Don't copy the options specific to a help buffer when
+ // BCO_NOHELP is given or the options were initialized already
+ // (jumping back to a help file with CTRL-T or CTRL-O)
dont_do_help = ((flags & BCO_NOHELP) && buf->b_help)
|| buf->b_p_initialized;
- if (dont_do_help) /* don't free b_p_isk */
+ if (dont_do_help) // don't free b_p_isk
{
save_p_isk = buf->b_p_isk;
buf->b_p_isk = NULL;
@@ -5823,39 +5856,62 @@ buf_copy_options(buf_T *buf, int flags)
free_buf_options(buf, FALSE);
buf->b_p_ai = p_ai;
+ COPY_OPT_SCTX(buf, BV_AI);
buf->b_p_ai_nopaste = p_ai_nopaste;
buf->b_p_sw = p_sw;
+ COPY_OPT_SCTX(buf, BV_SW);
buf->b_p_tw = p_tw;
+ COPY_OPT_SCTX(buf, BV_TW);
buf->b_p_tw_nopaste = p_tw_nopaste;
buf->b_p_tw_nobin = p_tw_nobin;
buf->b_p_wm = p_wm;
+ COPY_OPT_SCTX(buf, BV_WM);
buf->b_p_wm_nopaste = p_wm_nopaste;
buf->b_p_wm_nobin = p_wm_nobin;
buf->b_p_bin = p_bin;
+ COPY_OPT_SCTX(buf, BV_BIN);
buf->b_p_bomb = p_bomb;
+ COPY_OPT_SCTX(buf, BV_BOMB);
buf->b_p_fixeol = p_fixeol;
+ COPY_OPT_SCTX(buf, BV_FIXEOL);
buf->b_p_et = p_et;
+ COPY_OPT_SCTX(buf, BV_ET);
buf->b_p_et_nobin = p_et_nobin;
buf->b_p_et_nopaste = p_et_nopaste;
buf->b_p_ml = p_ml;
+ COPY_OPT_SCTX(buf, BV_ML);
buf->b_p_ml_nobin = p_ml_nobin;
buf->b_p_inf = p_inf;
- buf->b_p_swf = cmdmod.noswapfile ? FALSE : p_swf;
+ COPY_OPT_SCTX(buf, BV_INF);
+ if (cmdmod.noswapfile)
+ buf->b_p_swf = FALSE;
+ else
+ {
+ buf->b_p_swf = p_swf;
+ COPY_OPT_SCTX(buf, BV_INF);
+ }
buf->b_p_cpt = vim_strsave(p_cpt);
+ COPY_OPT_SCTX(buf, BV_CPT);
#ifdef BACKSLASH_IN_FILENAME
buf->b_p_csl = vim_strsave(p_csl);
+ COPY_OPT_SCTX(buf, BV_CSL);
#endif
#ifdef FEAT_COMPL_FUNC
buf->b_p_cfu = vim_strsave(p_cfu);
+ COPY_OPT_SCTX(buf, BV_CFU);
buf->b_p_ofu = vim_strsave(p_ofu);
+ COPY_OPT_SCTX(buf, BV_OFU);
#endif
#ifdef FEAT_EVAL
buf->b_p_tfu = vim_strsave(p_tfu);
+ COPY_OPT_SCTX(buf, BV_TFU);
#endif
buf->b_p_sts = p_sts;
+ COPY_OPT_SCTX(buf, BV_STS);
buf->b_p_sts_nopaste = p_sts_nopaste;
#ifdef FEAT_VARTABS
buf->b_p_vsts = vim_strsave(p_vsts);
+ COPY_OPT_SCTX(buf, BV_VSTS);
if (p_vsts && p_vsts != empty_option)
tabstop_set(p_vsts, &buf->b_p_vsts_array);
else
@@ -5864,71 +5920,99 @@ buf_copy_options(buf_T *buf, int flags)
? vim_strsave(p_vsts_nopaste) : NULL;
#endif
buf->b_p_sn = p_sn;
+ COPY_OPT_SCTX(buf, BV_SN);
buf->b_p_com = vim_strsave(p_com);
+ COPY_OPT_SCTX(buf, BV_COM);
#ifdef FEAT_FOLDING
buf->b_p_cms = vim_strsave(p_cms);
+ COPY_OPT_SCTX(buf, BV_CMS);
#endif
buf->b_p_fo = vim_strsave(p_fo);
+ COPY_OPT_SCTX(buf, BV_FO);
buf->b_p_flp = vim_strsave(p_flp);
+ COPY_OPT_SCTX(buf, BV_FLP);
// NOTE: Valgrind may report a bogus memory leak for 'nrformats'
// when it is set to 8 bytes in defaults.vim.
buf->b_p_nf = vim_strsave(p_nf);
+ COPY_OPT_SCTX(buf, BV_NF);
buf->b_p_mps = vim_strsave(p_mps);
+ COPY_OPT_SCTX(buf, BV_MPS);
#ifdef FEAT_SMARTINDENT
buf->b_p_si = p_si;
+ COPY_OPT_SCTX(buf, BV_SI);
#endif
buf->b_p_ci = p_ci;
+ COPY_OPT_SCTX(buf, BV_CI);
#ifdef FEAT_CINDENT
buf->b_p_cin = p_cin;
+ COPY_OPT_SCTX(buf, BV_CIN);
buf->b_p_cink = vim_strsave(p_cink);
+ COPY_OPT_SCTX(buf, BV_CINK);
buf->b_p_cino = vim_strsave(p_cino);
+ COPY_OPT_SCTX(buf, BV_CINO);
#endif
- /* Don't copy 'filetype', it must be detected */
+ // Don't copy 'filetype', it must be detected
buf->b_p_ft = empty_option;
buf->b_p_pi = p_pi;
+ COPY_OPT_SCTX(buf, BV_PI);
#if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
buf->b_p_cinw = vim_strsave(p_cinw);
+ COPY_OPT_SCTX(buf, BV_CINW);
#endif
#ifdef FEAT_LISP
buf->b_p_lisp = p_lisp;
+ COPY_OPT_SCTX(buf, BV_LISP);
#endif
#ifdef FEAT_SYN_HL
/* Don't copy 'syntax', it must be set */
buf->b_p_syn = empty_option;
buf->b_p_smc = p_smc;
+ COPY_OPT_SCTX(buf, BV_SMC);
buf->b_s.b_syn_isk = empty_option;
#endif
#ifdef FEAT_SPELL
buf->b_s.b_p_spc = vim_strsave(p_spc);
+ COPY_OPT_SCTX(buf, BV_SPC);
(void)compile_cap_prog(&buf->b_s);
buf->b_s.b_p_spf = vim_strsave(p_spf);
+ COPY_OPT_SCTX(buf, BV_SPF);
buf->b_s.b_p_spl = vim_strsave(p_spl);
+ COPY_OPT_SCTX(buf, BV_SPL);
#endif
#if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
buf->b_p_inde = vim_strsave(p_inde);
+ COPY_OPT_SCTX(buf, BV_INDE);
buf->b_p_indk = vim_strsave(p_indk);
+ COPY_OPT_SCTX(buf, BV_INDK);
#endif
buf->b_p_fp = empty_option;
#if defined(FEAT_EVAL)
buf->b_p_fex = vim_strsave(p_fex);
+ COPY_OPT_SCTX(buf, BV_FEX);
#endif
#ifdef FEAT_CRYPT
buf->b_p_key = vim_strsave(p_key);
+ COPY_OPT_SCTX(buf, BV_KEY);
#endif
#ifdef FEAT_SEARCHPATH
buf->b_p_sua = vim_strsave(p_sua);
+ COPY_OPT_SCTX(buf, BV_SUA);
#endif
#ifdef FEAT_KEYMAP
buf->b_p_keymap = vim_strsave(p_keymap);
+ COPY_OPT_SCTX(buf, BV_KMAP);
buf->b_kmap_state |= KEYMAP_INIT;
#endif
#ifdef FEAT_TERMINAL
buf->b_p_twsl = p_twsl;
+ COPY_OPT_SCTX(buf, BV_TWSL);
#endif
/* This isn't really an option, but copying the langmap and IME
* state from the current buffer is better than resetting it. */
buf->b_p_iminsert = p_iminsert;
+ COPY_OPT_SCTX(buf, BV_IMI);
buf->b_p_imsearch = p_imsearch;
+ COPY_OPT_SCTX(buf, BV_IMS);
/* options that are normally global but also have a local value
* are not copied, start using the global value */
@@ -5952,12 +6036,14 @@ buf_copy_options(buf_T *buf, int flags)
buf->b_p_inc = empty_option;
# ifdef FEAT_EVAL
buf->b_p_inex = vim_strsave(p_inex);
+ COPY_OPT_SCTX(buf, BV_INEX);
# endif
#endif
buf->b_p_dict = empty_option;
buf->b_p_tsr = empty_option;
#ifdef FEAT_TEXTOBJ
buf->b_p_qe = vim_strsave(p_qe);
+ COPY_OPT_SCTX(buf, BV_QE);
#endif
#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
buf->b_p_bexpr = empty_option;
@@ -5967,6 +6053,7 @@ buf_copy_options(buf_T *buf, int flags)
#endif
#ifdef FEAT_PERSISTENT_UNDO
buf->b_p_udf = p_udf;
+ COPY_OPT_SCTX(buf, BV_UDF);
#endif
#ifdef FEAT_LISP
buf->b_p_lw = empty_option;
@@ -5992,10 +6079,12 @@ buf_copy_options(buf_T *buf, int flags)
else
{
buf->b_p_isk = vim_strsave(p_isk);
+ COPY_OPT_SCTX(buf, BV_ISK);
did_isk = TRUE;
buf->b_p_ts = p_ts;
#ifdef FEAT_VARTABS
buf->b_p_vts = vim_strsave(p_vts);
+ COPY_OPT_SCTX(buf, BV_VTS);
if (p_vts && p_vts != empty_option && !buf->b_p_vts_array)
tabstop_set(p_vts, &buf->b_p_vts_array);
else
@@ -6005,6 +6094,7 @@ buf_copy_options(buf_T *buf, int flags)
if (buf->b_p_bt[0] == 'h')
clear_string_option(&buf->b_p_bt);
buf->b_p_ma = p_ma;
+ COPY_OPT_SCTX(buf, BV_MA);
}
}
@@ -6897,6 +6987,8 @@ check_opt_wim(void)
new_wim_flags[idx] |= WIM_FULL;
else if (i == 4 && STRNCMP(p, "list", 4) == 0)
new_wim_flags[idx] |= WIM_LIST;
+ else if (i == 8 && STRNCMP(p, "lastused", 8) == 0)
+ new_wim_flags[idx] |= WIM_BUFLASTUSED;
else
return FAIL;
p += i;
diff --git a/src/option.h b/src/option.h
index aaa9443..3ee9979 100644
--- a/src/option.h
+++ b/src/option.h
@@ -338,6 +338,7 @@
#define WIM_FULL 0x01
#define WIM_LONGEST 0x02
#define WIM_LIST 0x04
+#define WIM_BUFLASTUSED 0x08
// arguments for can_bs()
#define BS_INDENT 'i' // "Indent"
@@ -979,7 +980,7 @@ EXTERN unsigned tbis_flags;
# define TBIS_GIANT 0x20
#endif
EXTERN long p_ttyscroll; // 'ttyscroll'
-#if defined(FEAT_MOUSE) && (defined(UNIX) || defined(VMS))
+#if defined(UNIX) || defined(VMS)
EXTERN char_u *p_ttym; // 'ttymouse'
EXTERN unsigned ttym_flags;
# define TTYM_XTERM 0x01
diff --git a/src/optiondefs.h b/src/optiondefs.h
index 3745d07..a1d37f8 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -289,7 +289,7 @@ struct vimoption
# define ISP_LATIN1 (char_u *)"@,161-255"
#endif
-# define HIGHLIGHT_INIT "8:SpecialKey,~:EndOfBuffer,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn,q:QuickFixLine,z:StatusLineTerm,Z:StatusLineTermNC"
+# define HIGHLIGHT_INIT "8:SpecialKey,~:EndOfBuffer,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,a:LineNrAbove,b:LineNrBelow,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn,q:QuickFixLine,z:StatusLineTerm,Z:StatusLineTermNC"
// Default python version for pyx* commands
#if defined(FEAT_PYTHON) && defined(FEAT_PYTHON3)
@@ -2655,7 +2655,7 @@ static struct vimoption options[] =
(char_u *)&p_tf, PV_NONE,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"ttymouse", "ttym", P_STRING|P_NODEFAULT|P_NO_MKRC|P_VI_DEF,
-#if defined(FEAT_MOUSE) && (defined(UNIX) || defined(VMS))
+#if defined(UNIX) || defined(VMS)
(char_u *)&p_ttym, PV_NONE,
#else
(char_u *)NULL, PV_NONE,
@@ -2969,7 +2969,9 @@ static struct vimoption options[] =
p_term("t_ST", T_CST)
p_term("t_Te", T_STE)
p_term("t_te", T_TE)
+ p_term("t_TE", T_CTE)
p_term("t_ti", T_TI)
+ p_term("t_TI", T_CTI)
p_term("t_Ts", T_STS)
p_term("t_ts", T_TS)
p_term("t_u7", T_U7)
diff --git a/src/optionstr.c b/src/optionstr.c
index 925ea59..bcc737e 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -47,7 +47,7 @@ static char *(p_toolbar_values[]) = {"text", "icons", "tooltips", "horiz", NULL}
#if defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK)
static char *(p_tbis_values[]) = {"tiny", "small", "medium", "large", "huge", "giant", NULL};
#endif
-#if defined(FEAT_MOUSE) && (defined(UNIX) || defined(VMS))
+#if defined(UNIX) || defined(VMS)
static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", "sgr", NULL};
#endif
static char *(p_ve_values[]) = {"block", "insert", "all", "onemore", NULL};
@@ -76,7 +76,7 @@ static char *(p_fdm_values[]) = {"manual", "expr", "marker", "indent", "syntax",
NULL};
static char *(p_fcl_values[]) = {"all", NULL};
#endif
-static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "popup", "noinsert", "noselect", NULL};
+static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "popup", "popuphidden", "noinsert", "noselect", NULL};
#ifdef BACKSLASH_IN_FILENAME
static char *(p_csl_values[]) = {"slash", "backslash", NULL};
#endif
@@ -110,7 +110,7 @@ didset_string_options(void)
(void)opt_strings_flags(p_dy, p_dy_values, &dy_flags, TRUE);
(void)opt_strings_flags(p_tc, p_tc_values, &tc_flags, FALSE);
(void)opt_strings_flags(p_ve, p_ve_values, &ve_flags, TRUE);
-#if defined(FEAT_MOUSE) && (defined(UNIX) || defined(VMS))
+#if defined(UNIX) || defined(VMS)
(void)opt_strings_flags(p_ttym, p_ttym_values, &ttym_flags, FALSE);
#endif
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
@@ -1588,7 +1588,7 @@ did_set_string_option(
}
#endif
-#if defined(FEAT_MOUSE_TTY) && (defined(UNIX) || defined(VMS))
+#if defined(UNIX) || defined(VMS)
// 'ttymouse'
else if (varp == &p_ttym)
{
@@ -1892,7 +1892,8 @@ did_set_string_option(
{
if (*p_pt)
{
- (void)replace_termcodes(p_pt, &p, TRUE, TRUE, FALSE);
+ (void)replace_termcodes(p_pt, &p,
+ REPTERM_FROM_PART | REPTERM_DO_LT, NULL);
if (p != NULL)
{
if (new_value_alloced)
@@ -2253,12 +2254,7 @@ did_set_string_option(
#endif
else if (varp == &p_mouse) // 'mouse'
{
-#ifdef FEAT_MOUSE
p = (char_u *)MOUSE_ALL;
-#else
- if (*p_mouse != NUL)
- errmsg = N_("E538: No mouse support");
-#endif
}
#if defined(FEAT_GUI)
else if (varp == &p_go) // 'guioptions'
@@ -2388,20 +2384,16 @@ did_set_string_option(
#endif
}
-#ifdef FEAT_MOUSE
if (varp == &p_mouse)
{
-# ifdef FEAT_MOUSE_TTY
if (*p_mouse == NUL)
mch_setmouse(FALSE); // switch mouse off
else
-# endif
setmouse(); // in case 'mouse' changed
}
-#endif
if (curwin->w_curswant != MAXCOL
- && (get_option_flags(opt_idx) & (P_CURSWANT | P_RALL)) != 0)
+ && (get_option_flags(opt_idx) & (P_CURSWANT | P_RALL)) != 0)
curwin->w_set_curswant = TRUE;
#ifdef FEAT_GUI
diff --git a/src/os_amiga.c b/src/os_amiga.c
index aff24c5..8627cb6 100644
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -658,6 +658,12 @@ mch_can_restore_icon(void)
}
#endif
+ void
+mch_setmouse(int on UNUSED)
+{
+ // TODO: implement
+}
+
/*
* Insert user name in s[len].
*/
diff --git a/src/os_unix.c b/src/os_unix.c
index 54989af..e8fe90a 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -877,7 +877,7 @@ sig_alarm SIGDEFARG(sigarg)
static JMP_BUF lc_jump_env;
# ifdef SIGHASARG
-// Caught signal number, 0 when no was signal caught; used for mch_libcall().
+// Caught signal number, 0 when no signal was caught; used for mch_libcall().
// Volatile because it is used in signal handlers.
static volatile sig_atomic_t lc_signal;
# endif
@@ -2201,9 +2201,9 @@ mch_settitle(char_u *title, char_u *icon)
if (*T_CIS != NUL)
{
- out_str(T_CIS); /* set icon start */
+ out_str(T_CIS); // set icon start
out_str_nf(icon);
- out_str(T_CIE); /* set icon end */
+ out_str(T_CIE); // set icon end
out_flush();
}
#ifdef FEAT_X11
@@ -2282,7 +2282,6 @@ use_xterm_like_mouse(char_u *name)
}
#endif
-#if defined(FEAT_MOUSE_TTY) || defined(PROTO)
/*
* Return non-zero when using an xterm mouse, according to 'ttymouse'.
* Return 1 for "xterm".
@@ -2303,7 +2302,6 @@ use_xterm_mouse(void)
return 1;
return 0;
}
-#endif
int
vim_is_iris(char_u *name)
@@ -3069,7 +3067,7 @@ executable_file(char_u *name)
return 0;
#ifdef VMS
/* Like on Unix system file can have executable rights but not necessarily
- * be an executable, but on Unix is not a default for an ordianry file to
+ * be an executable, but on Unix is not a default for an ordinary file to
* have an executable flag - on VMS it is in most cases.
* Therefore, this check does not have any sense - let keep us to the
* conventions instead:
@@ -3458,11 +3456,21 @@ mch_settmode(int tmode)
/* but it breaks function keys on MINT */
# endif
);
-# ifdef ONLCR /* don't map NL -> CR NL, we do it ourselves */
+# ifdef ONLCR
+ // Don't map NL -> CR NL, we do it ourselves.
+ // Also disable expanding tabs if possible.
+# ifdef XTABS
+ tnew.c_oflag &= ~(ONLCR | XTABS);
+# else
+# ifdef TAB3
+ tnew.c_oflag &= ~(ONLCR | TAB3);
+# else
tnew.c_oflag &= ~ONLCR;
+# endif
+# endif
# endif
- tnew.c_cc[VMIN] = 1; /* return after 1 char */
- tnew.c_cc[VTIME] = 0; /* don't wait */
+ tnew.c_cc[VMIN] = 1; // return after 1 char
+ tnew.c_cc[VTIME] = 0; // don't wait
}
else if (tmode == TMODE_SLEEP)
{
@@ -3592,7 +3600,6 @@ get_tty_info(int fd, ttyinfo_T *info)
#endif /* VMS */
-#if defined(FEAT_MOUSE_TTY) || defined(PROTO)
static int mouse_ison = FALSE;
/*
@@ -3601,29 +3608,29 @@ static int mouse_ison = FALSE;
void
mch_setmouse(int on)
{
-# ifdef FEAT_BEVAL_TERM
+#ifdef FEAT_BEVAL_TERM
static int bevalterm_ison = FALSE;
-# endif
+#endif
int xterm_mouse_vers;
-# if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)
+#if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)
if (!on)
// Make sure not tracing mouse movements. Important when a button-down
// was received but no release yet.
stop_xterm_trace();
-# endif
+#endif
if (on == mouse_ison
-# ifdef FEAT_BEVAL_TERM
+#ifdef FEAT_BEVAL_TERM
&& p_bevalterm == bevalterm_ison
-# endif
+#endif
)
/* return quickly if nothing to do */
return;
xterm_mouse_vers = use_xterm_mouse();
-# ifdef FEAT_MOUSE_URXVT
+#ifdef FEAT_MOUSE_URXVT
if (ttym_flags == TTYM_URXVT)
{
out_str_nf((char_u *)
@@ -3632,7 +3639,7 @@ mch_setmouse(int on)
: IF_EB("\033[?1015l", ESC_STR "[?1015l")));
mouse_ison = on;
}
-# endif
+#endif
if (ttym_flags == TTYM_SGR)
{
@@ -3644,7 +3651,7 @@ mch_setmouse(int on)
mouse_ison = on;
}
-# ifdef FEAT_BEVAL_TERM
+#ifdef FEAT_BEVAL_TERM
if (bevalterm_ison != (p_bevalterm && on))
{
bevalterm_ison = (p_bevalterm && on);
@@ -3653,7 +3660,7 @@ mch_setmouse(int on)
out_str_nf((char_u *)
(IF_EB("\033[?1003l", ESC_STR "[?1003l")));
}
-# endif
+#endif
if (xterm_mouse_vers > 0)
{
@@ -3661,10 +3668,10 @@ mch_setmouse(int on)
out_str_nf((char_u *)
(xterm_mouse_vers > 1
? (
-# ifdef FEAT_BEVAL_TERM
+#ifdef FEAT_BEVAL_TERM
bevalterm_ison
? IF_EB("\033[?1003h", ESC_STR "[?1003h") :
-# endif
+#endif
IF_EB("\033[?1002h", ESC_STR "[?1002h"))
: IF_EB("\033[?1000h", ESC_STR "[?1000h")));
else /* disable mouse events, could probably always send the same */
@@ -3675,7 +3682,7 @@ mch_setmouse(int on)
mouse_ison = on;
}
-# ifdef FEAT_MOUSE_DEC
+#ifdef FEAT_MOUSE_DEC
else if (ttym_flags == TTYM_DEC)
{
if (on) /* enable mouse events */
@@ -3684,9 +3691,9 @@ mch_setmouse(int on)
out_str_nf((char_u *)"\033['z");
mouse_ison = on;
}
-# endif
+#endif
-# ifdef FEAT_MOUSE_GPM
+#ifdef FEAT_MOUSE_GPM
else
{
if (on)
@@ -3700,9 +3707,9 @@ mch_setmouse(int on)
mouse_ison = FALSE;
}
}
-# endif
+#endif
-# ifdef FEAT_SYSMOUSE
+#ifdef FEAT_SYSMOUSE
else
{
if (on)
@@ -3716,9 +3723,9 @@ mch_setmouse(int on)
mouse_ison = FALSE;
}
}
-# endif
+#endif
-# ifdef FEAT_MOUSE_JSB
+#ifdef FEAT_MOUSE_JSB
else
{
if (on)
@@ -3738,14 +3745,14 @@ mch_setmouse(int on)
* 4 = Windows Cross Hair
* 5 = Windows UP Arrow
*/
-# ifdef JSBTERM_MOUSE_NONADVANCED
+# ifdef JSBTERM_MOUSE_NONADVANCED
/* Disables full feedback of pointer movements */
out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK1Q\033\\",
ESC_STR "[0~ZwLMRK1Q" ESC_STR "\\"));
-# else
+# else
out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK+1Q\033\\",
ESC_STR "[0~ZwLMRK+1Q" ESC_STR "\\"));
-# endif
+# endif
mouse_ison = TRUE;
}
else
@@ -3755,8 +3762,8 @@ mch_setmouse(int on)
mouse_ison = FALSE;
}
}
-# endif
-# ifdef FEAT_MOUSE_PTERM
+#endif
+#ifdef FEAT_MOUSE_PTERM
else
{
/* 1 = button press, 6 = release, 7 = drag, 1h...9l = right button */
@@ -3766,7 +3773,7 @@ mch_setmouse(int on)
out_str_nf("\033[>1l\033[>6l\033[>7l\033[>1l\033[>9h");
mouse_ison = on;
}
-# endif
+#endif
}
#if defined(FEAT_BEVAL_TERM) || defined(PROTO)
@@ -3929,7 +3936,6 @@ check_mouse_termcode(void)
del_mouse_termcode(KS_SGR_MOUSE_RELEASE);
}
}
-#endif
/*
* set screen mode, always fails.
diff --git a/src/os_win32.c b/src/os_win32.c
index 9badbed..13960d1 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1127,17 +1127,15 @@ decode_key_event(
#endif /* FEAT_GUI_MSWIN */
-#ifdef FEAT_MOUSE
-
/*
* For the GUI the mouse handling is in gui_w32.c.
*/
-# if defined(FEAT_GUI_MSWIN) && !defined(VIMDLL)
+#if defined(FEAT_GUI_MSWIN) && !defined(VIMDLL)
void
mch_setmouse(int on UNUSED)
{
}
-# else
+#else
static int g_fMouseAvail = FALSE; /* mouse present */
static int g_fMouseActive = FALSE; /* mouse enabled */
static int g_nMouseClick = -1; /* mouse status */
@@ -1152,10 +1150,10 @@ mch_setmouse(int on)
{
DWORD cmodein;
-# ifdef VIMDLL
+# ifdef VIMDLL
if (gui.in_use)
return;
-# endif
+# endif
if (!g_fMouseAvail)
return;
@@ -1171,7 +1169,7 @@ mch_setmouse(int on)
}
-#if defined(FEAT_BEVAL_TERM) || defined(PROTO)
+# if defined(FEAT_BEVAL_TERM) || defined(PROTO)
/*
* Called when 'balloonevalterm' changed.
*/
@@ -1180,7 +1178,7 @@ mch_bevalterm_changed(void)
{
mch_setmouse(g_fMouseActive);
}
-#endif
+# endif
/*
* Decode a MOUSE_EVENT. If it's a valid event, return MOUSE_LEFT,
@@ -1218,9 +1216,9 @@ decode_mouse_event(
static int s_xOldMouse = -1;
static int s_yOldMouse = -1;
static linenr_T s_old_topline = 0;
-#ifdef FEAT_DIFF
+# ifdef FEAT_DIFF
static int s_old_topfill = 0;
-#endif
+# endif
static int s_cClicks = 1;
static BOOL s_fReleased = TRUE;
static DWORD s_dwLastClickTime = 0;
@@ -1275,12 +1273,12 @@ decode_mouse_event(
/* If the last thing returned was MOUSE_RELEASE, ignore this */
if (s_fReleased)
{
-#ifdef FEAT_BEVAL_TERM
+# ifdef FEAT_BEVAL_TERM
/* do return mouse move events when we want them */
if (p_bevalterm)
nButton = MOUSE_DRAG;
else
-#endif
+# endif
return FALSE;
}
@@ -1386,9 +1384,9 @@ decode_mouse_event(
|| s_yOldMouse != g_yMouse
|| s_nOldButton != nButton
|| s_old_topline != curwin->w_topline
-#ifdef FEAT_DIFF
+# ifdef FEAT_DIFF
|| s_old_topfill != curwin->w_topfill
-#endif
+# endif
|| (int)(dwCurrentTime - s_dwLastClickTime) > p_mouset)
{
s_cClicks = 1;
@@ -1439,16 +1437,15 @@ decode_mouse_event(
s_xOldMouse = g_xMouse;
s_yOldMouse = g_yMouse;
s_old_topline = curwin->w_topline;
-#ifdef FEAT_DIFF
+# ifdef FEAT_DIFF
s_old_topfill = curwin->w_topfill;
-#endif
+# endif
s_nOldMouseClick = g_nMouseClick;
return TRUE;
}
-# endif /* FEAT_GUI_MSWIN */
-#endif /* FEAT_MOUSE */
+#endif // FEAT_GUI_MSWIN
#ifdef MCH_CURSOR_SHAPE
@@ -1547,10 +1544,7 @@ WaitForChar(long msec, int ignore_input)
#endif
}
- if (0
-#ifdef FEAT_MOUSE
- || g_nMouseClick != -1
-#endif
+ if (g_nMouseClick != -1
#ifdef FEAT_CLIENTSERVER
|| (!ignore_input && input_available())
#endif
@@ -1683,11 +1677,9 @@ WaitForChar(long msec, int ignore_input)
shell_resized();
}
}
-#ifdef FEAT_MOUSE
else if (ir.EventType == MOUSE_EVENT
&& decode_mouse_event(&ir.Event.MouseEvent))
return TRUE;
-#endif
}
else if (msec == 0)
break;
@@ -1760,10 +1752,8 @@ tgetch(int *pmodifiers, WCHAR *pch2)
(void)WaitForChar(-1L, FALSE);
if (input_available())
return 0;
-# ifdef FEAT_MOUSE
if (g_nMouseClick != -1)
return 0;
-# endif
#endif
if (read_console_input(g_hConIn, &ir, 1, &cRecords) == 0)
{
@@ -1783,13 +1773,11 @@ tgetch(int *pmodifiers, WCHAR *pch2)
handle_focus_event(ir);
else if (ir.EventType == WINDOW_BUFFER_SIZE_EVENT)
shell_resized();
-#ifdef FEAT_MOUSE
else if (ir.EventType == MOUSE_EVENT)
{
if (decode_mouse_event(&ir.Event.MouseEvent))
return 0;
}
-#endif
}
}
#endif /* !FEAT_GUI_MSWIN */
@@ -1879,14 +1867,13 @@ mch_inchar(
typeaheadlen = 0;
break;
}
-#ifdef FEAT_MOUSE
if (g_nMouseClick != -1)
{
-# ifdef MCH_WRITE_DUMP
+#ifdef MCH_WRITE_DUMP
if (fdDump)
fprintf(fdDump, "{%02x @ %d, %d}",
g_nMouseClick, g_xMouse, g_yMouse);
-# endif
+#endif
typeahead[typeaheadlen++] = ESC + 128;
typeahead[typeaheadlen++] = 'M';
typeahead[typeaheadlen++] = g_nMouseClick;
@@ -1895,7 +1882,6 @@ mch_inchar(
g_nMouseClick = -1;
}
else
-#endif
{
WCHAR ch2 = NUL;
int modifiers = 0;
@@ -1918,9 +1904,7 @@ mch_inchar(
got_int = TRUE;
}
-#ifdef FEAT_MOUSE
if (g_nMouseClick == -1)
-#endif
{
int n = 1;
@@ -2675,9 +2659,7 @@ mch_init_c(void)
g_fWindInitCalled = TRUE;
-#ifdef FEAT_MOUSE
g_fMouseAvail = GetSystemMetrics(SM_MOUSEPRESENT);
-#endif
#ifdef FEAT_CLIPBOARD
win_clip_init();
@@ -3609,10 +3591,8 @@ mch_settmode(int tmode)
{
cmodein &= ~(ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT |
ENABLE_ECHO_INPUT);
-#ifdef FEAT_MOUSE
if (g_fMouseActive)
cmodein |= ENABLE_MOUSE_INPUT;
-#endif
cmodeout &= ~(
#ifdef FEAT_TERMGUICOLORS
/* Do not turn off the ENABLE_PROCESSED_OUTPUT flag when using
@@ -5501,12 +5481,10 @@ termcap_mode_start(void)
#endif
GetConsoleMode(g_hConIn, &cmodein);
-#ifdef FEAT_MOUSE
if (g_fMouseActive)
cmodein |= ENABLE_MOUSE_INPUT;
else
cmodein &= ~ENABLE_MOUSE_INPUT;
-#endif
cmodein |= ENABLE_WINDOW_INPUT;
SetConsoleMode(g_hConIn, cmodein);
diff --git a/src/os_win32.h b/src/os_win32.h
index 2169bd3..ac89911 100644
--- a/src/os_win32.h
+++ b/src/os_win32.h
@@ -62,7 +62,7 @@
#endif
#define USE_FNAME_CASE /* adjust case of file names */
-#if !defined(FEAT_CLIPBOARD) && defined(FEAT_MOUSE)
+#if !defined(FEAT_CLIPBOARD)
# define FEAT_CLIPBOARD /* include clipboard support */
#endif
#if defined(__DATE__) && defined(__TIME__)
diff --git a/src/po/Make_all.mak b/src/po/Make_all.mak
index c179de1..b062bcc 100644
--- a/src/po/Make_all.mak
+++ b/src/po/Make_all.mak
@@ -35,6 +35,7 @@ LANGUAGES = \
sk.cp1250 \
sr \
sv \
+ tr \
uk \
uk.cp1251 \
vi \
@@ -78,6 +79,7 @@ POFILES = \
sk.cp1250.po \
sr.po \
sv.po \
+ tr.po \
uk.po \
uk.cp1251.po \
vi.po \
@@ -114,6 +116,7 @@ MOFILES = \
sk.mo \
sr.mo \
sv.mo \
+ tr.mo \
uk.mo \
vi.mo \
zh_CN.UTF-8.mo \
@@ -167,6 +170,7 @@ CHECKFILES = \
sk.cp1250.ck \
sr.ck \
sv.ck \
+ tr.ck \
uk.ck \
uk.cp1251.ck \
vi.ck \
diff --git a/src/po/de.po b/src/po/de.po
index 5a14f4a..69d48a4 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Vim\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-09-09 08:53+0200\n"
+"POT-Creation-Date: 2019-10-24 20:05+0200\n"
"PO-Revision-Date: 2008-05-24 17:26+0200\n"
"Last-Translator: Christian Brabandt <cb@256bit.org>\n"
"Language-Team: German\n"
@@ -273,6 +273,144 @@ msgstr "[Popup]"
msgid "[Scratch]"
msgstr "[Scratch]"
+msgid "WARNING: The file has been changed since reading it!!!"
+msgstr "ACHTUNG: Die Datei wurde seit dem letzten Lesen gendert!!!"
+
+msgid "Do you really want to write to it"
+msgstr "Mchten Sie sie wirklich schreiben"
+
+msgid "E676: No matching autocommands for acwrite buffer"
+msgstr "E676: Keine bereinstimmenden Autokommandos fr acwrite Puffer"
+
+msgid "E203: Autocommands deleted or unloaded buffer to be written"
+msgstr ""
+"E203: Autokommandos haben den zu schreibenden Puffer gelscht oder entladen"
+
+msgid "E204: Autocommand changed number of lines in unexpected way"
+msgstr ""
+"E204: Autokommandos haben die Anzahl der Zeilen in unerwarteter Weise "
+"verndert"
+
+msgid "NetBeans disallows writes of unmodified buffers"
+msgstr "NetBeans verweigert das Schreiben von unvernderten Puffern."
+
+msgid "Partial writes disallowed for NetBeans buffers"
+msgstr "Partielles Schreiben fr NetBeans Puffer verweigert"
+
+msgid "is a directory"
+msgstr "ist ein Verzeichnis"
+
+msgid "is not a file or writable device"
+msgstr "ist keine Datei oder beschreibbares Device"
+
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "Schreiben auf Gert durch 'opendevice' Option deaktiviert."
+
+msgid "is read-only (add ! to override)"
+msgstr "ist schreibgeschtzt (erzwinge mit !)"
+
+msgid "E506: Can't write to backup file (add ! to override)"
+msgstr "E506: Sicherungsdatei kann nicht geschrieben werden (erzwinge mit !)"
+
+msgid "E507: Close error for backup file (add ! to override)"
+msgstr "E507: Fehler beim Schlieen der Sicherungsdatei (erzwinge mit !)"
+
+msgid "E508: Can't read file for backup (add ! to override)"
+msgstr "E508: Sicherungsdatei kann nicht gelesen werden (erzwinge mit !)"
+
+msgid "E509: Cannot create backup file (add ! to override)"
+msgstr "E509: Sicherungsdatei kann nicht angelegt werden (erzwinge mit !)"
+
+msgid "E510: Can't make backup file (add ! to override)"
+msgstr "E510: Sicherungsdatei kann nicht erstellt werden (erzwinge mit !)"
+
+msgid "E214: Can't find temp file for writing"
+msgstr "E214: Temporre Datei kann nicht zum Schreiben geffnet werden"
+
+msgid "E213: Cannot convert (add ! to write without conversion)"
+msgstr "E213: Fehler bei der Umwandlung (schreibe ohne Umwandlung mit !)"
+
+msgid "E166: Can't open linked file for writing"
+msgstr "E166: Gelinkte Datei kann nicht zum Schreiben geffnet werden"
+
+msgid "E212: Can't open file for writing"
+msgstr "E212: Datei kann nicht zum Schreiben geffnet werden"
+
+msgid "E949: File changed while writing"
+msgstr "E949: Datei wurde whrend des Schreibens verndert"
+
+msgid "E512: Close failed"
+msgstr "E512: Fehler beim Schlieen"
+
+msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
+msgstr ""
+"E513: Schreibfehler, Umwandlung schlug fehl (leere 'fenc' um es zu erzwingen)"
+
+#, c-format
+msgid ""
+"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"override)"
+msgstr ""
+"E513: Schreibfehler, Konvertierung in Zeile %ld fehlgeschlagen (leere 'fenc' "
+"um es zu erzwingen)"
+
+msgid "E514: write error (file system full?)"
+msgstr "E514: Schreibfehler (Dateisystem voll?)"
+
+msgid " CONVERSION ERROR"
+msgstr "KONVERTIERUNGSFEHLER"
+
+#, c-format
+msgid " in line %ld;"
+msgstr " in Zeile %ld"
+
+msgid "[NOT converted]"
+msgstr "[NICHT konvertiert]"
+
+msgid "[converted]"
+msgstr "[konvertiert]"
+
+msgid "[Device]"
+msgstr "[Ausgabegert]"
+
+msgid "[New]"
+msgstr "[Neu]"
+
+msgid "[New File]"
+msgstr "[Neue Datei]"
+
+msgid " [a]"
+msgstr " [a]"
+
+msgid " appended"
+msgstr " angefgt"
+
+msgid " [w]"
+msgstr " [w]"
+
+msgid " written"
+msgstr " geschrieben"
+
+msgid "E205: Patchmode: can't save original file"
+msgstr "E205: patchmode: Original-Datei kann nicht gespeichert werden"
+
+msgid "E206: patchmode: can't touch empty original file"
+msgstr "E206: patchmode: leere Original-Datei kann nicht verndert werden"
+
+msgid "E207: Can't delete backup file"
+msgstr "E207: Backup-Datei kann nicht gelscht werden"
+
+msgid ""
+"\n"
+"WARNING: Original file may be lost or damaged\n"
+msgstr ""
+"\n"
+"ACHTUNG: Original-Datei knnte verloren oder beschdigt sein\n"
+
+msgid "don't quit the editor until the file is successfully written!"
+msgstr ""
+"beenden Sie nicht den Editor bis die Datei erfolgreich geschrieben wurde!"
+
msgid "W10: Warning: Changing a readonly file"
msgstr "W10: Achtung: ndern einer schreibgeschtzten Datei"
@@ -742,22 +880,9 @@ msgstr "E736: Unzulssige Funktion fr ein Dictionary"
msgid "E694: Invalid operation for Funcrefs"
msgstr "E694: Unzulssige Operation fr Funktionsreferenzen"
-msgid "map() argument"
-msgstr "map() Argument"
-
-msgid "filter() argument"
-msgstr "filter() Argument"
-
-#, c-format
-msgid "E899: Argument of %s must be a List or Blob"
-msgstr "E899: Argument von %s muss eine Liste oder ein Blob sein."
-
msgid "E808: Number or Float required"
msgstr "E808: Zahl oder Float bentigt."
-msgid "add() argument"
-msgstr "add() Argument"
-
#, c-format
msgid "E158: Invalid buffer name: %s"
msgstr "E158: ungltige Puffernummer: %s"
@@ -790,9 +915,6 @@ msgstr ""
msgid "called inputrestore() more often than inputsave()"
msgstr "inputrestore() wurde hufiger als inputsave() aufgerufen."
-msgid "insert() argument"
-msgstr "insert() Argument"
-
msgid "E786: Range not allowed"
msgstr "E786: Bereich nicht erlaubt"
@@ -805,9 +927,6 @@ msgstr "E726: Stride ist Null"
msgid "E727: Start past end"
msgstr "E727: Start hinter dem Ende"
-msgid "<empty>"
-msgstr "<leer>"
-
msgid "E240: No connection to the X server"
msgstr "E240: Keine Verbindung zum X-Server"
@@ -824,15 +943,6 @@ msgstr "E941: Server bereits gestartet."
msgid "E942: +clientserver feature not available"
msgstr "E942: +clientserver Eigenschaft nicht verfgbar"
-msgid "remove() argument"
-msgstr "remove() Argument"
-
-msgid "E655: Too many symbolic links (cycle?)"
-msgstr "E655: Zu viele symbolische Links (zirkulr?)"
-
-msgid "reverse() argument"
-msgstr "reverse() Argument"
-
msgid "E258: Unable to send to client"
msgstr "E258: Kann nicht zum Client senden."
@@ -847,12 +957,6 @@ msgstr "(Ungltig)"
msgid "E935: invalid submatch number: %d"
msgstr "E935: Ungltige Submatch Nummer: %d"
-msgid "E677: Error writing temp file"
-msgstr "E677: Fehler beim Schreiben einer temporren Datei"
-
-msgid "E921: Invalid callback argument"
-msgstr "E921: Unglgltiges Callback Argument"
-
msgid "E18: Unexpected characters in :let"
msgstr "E18: Unerwartete Zeichen in :let"
@@ -933,6 +1037,9 @@ msgstr "Unbekannt"
msgid "E742: Cannot change value of %s"
msgstr "E742: Kann Wert nicht ndern: %s"
+msgid "E921: Invalid callback argument"
+msgstr "E921: Unglgltiges Callback Argument"
+
#, c-format
msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s"
msgstr "<%s>%s%s %d, Hex %02x, Oktal %03o, Digr %s"
@@ -1180,6 +1287,10 @@ msgstr ""
msgid "E501: At end-of-file"
msgstr "E501: Am Dateiende"
+#, c-format
+msgid "Executing: %s"
+msgstr "Fhre aus: %s"
+
msgid "E169: Command too recursive"
msgstr "E169: Befehl zu rekursiv"
@@ -1214,8 +1325,8 @@ msgstr "E494: Verwenden Sie w oder w>>"
msgid ""
"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
msgstr ""
-"INTERN: Kann EX_DFLALL nicht zusammen mit ADDR_NONE, ADDR_UNSIGNED "
-"oder ADDR_QUICKFIX nutzen"
+"INTERN: Kann EX_DFLALL nicht zusammen mit ADDR_NONE, ADDR_UNSIGNED oder "
+"ADDR_QUICKFIX nutzen"
msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
msgstr ""
@@ -1474,18 +1585,12 @@ msgstr "E812: Autokommandos vernderten Puffer oder Puffername."
msgid "Illegal file name"
msgstr "Unzulssiger Dateiname"
-msgid "is a directory"
-msgstr "ist ein Verzeichnis"
-
msgid "is not a file"
msgstr "ist keine Datei"
msgid "is a device (disabled with 'opendevice' option)"
msgstr "ist ein Gert (durch 'opendevice' Option deaktiviert)"
-msgid "[New File]"
-msgstr "[Neue Datei]"
-
msgid "[New DIRECTORY]"
msgstr "[Neues VERZEICHNIS]"
@@ -1526,12 +1631,6 @@ msgstr "[CR fehlt]"
msgid "[long lines split]"
msgstr "[lange Zeilen geteilt]"
-msgid "[NOT converted]"
-msgstr "[NICHT konvertiert]"
-
-msgid "[converted]"
-msgstr "[konvertiert]"
-
#, c-format
msgid "[CONVERSION ERROR in line %ld]"
msgstr "UMWANDLUNGSFEHLER in Zeile %ld]"
@@ -1552,126 +1651,6 @@ msgstr "Fehler bei der Umwandlung mit 'charconvert'"
msgid "can't read output of 'charconvert'"
msgstr "Ausgabe von 'charconvert' kann nicht gelesen werden"
-msgid "E676: No matching autocommands for acwrite buffer"
-msgstr "E676: Keine bereinstimmenden Autokommandos fr acwrite Puffer"
-
-msgid "E203: Autocommands deleted or unloaded buffer to be written"
-msgstr ""
-"E203: Autokommandos haben den zu schreibenden Puffer gelscht oder entladen"
-
-msgid "E204: Autocommand changed number of lines in unexpected way"
-msgstr ""
-"E204: Autokommandos haben die Anzahl der Zeilen in unerwarteter Weise "
-"verndert"
-
-msgid "NetBeans disallows writes of unmodified buffers"
-msgstr "NetBeans verweigert das Schreiben von unvernderten Puffern."
-
-msgid "Partial writes disallowed for NetBeans buffers"
-msgstr "Partielles Schreiben fr NetBeans Puffer verweigert"
-
-msgid "is not a file or writable device"
-msgstr "ist keine Datei oder beschreibbares Device"
-
-msgid "writing to device disabled with 'opendevice' option"
-msgstr "Schreiben auf Gert durch 'opendevice' Option deaktiviert."
-
-msgid "is read-only (add ! to override)"
-msgstr "ist schreibgeschtzt (erzwinge mit !)"
-
-msgid "E506: Can't write to backup file (add ! to override)"
-msgstr "E506: Sicherungsdatei kann nicht geschrieben werden (erzwinge mit !)"
-
-msgid "E507: Close error for backup file (add ! to override)"
-msgstr "E507: Fehler beim Schlieen der Sicherungsdatei (erzwinge mit !)"
-
-msgid "E508: Can't read file for backup (add ! to override)"
-msgstr "E508: Sicherungsdatei kann nicht gelesen werden (erzwinge mit !)"
-
-msgid "E509: Cannot create backup file (add ! to override)"
-msgstr "E509: Sicherungsdatei kann nicht angelegt werden (erzwinge mit !)"
-
-msgid "E510: Can't make backup file (add ! to override)"
-msgstr "E510: Sicherungsdatei kann nicht erstellt werden (erzwinge mit !)"
-
-msgid "E214: Can't find temp file for writing"
-msgstr "E214: Temporre Datei kann nicht zum Schreiben geffnet werden"
-
-msgid "E213: Cannot convert (add ! to write without conversion)"
-msgstr "E213: Fehler bei der Umwandlung (schreibe ohne Umwandlung mit !)"
-
-msgid "E166: Can't open linked file for writing"
-msgstr "E166: Gelinkte Datei kann nicht zum Schreiben geffnet werden"
-
-msgid "E212: Can't open file for writing"
-msgstr "E212: Datei kann nicht zum Schreiben geffnet werden"
-
-msgid "E949: File changed while writing"
-msgstr "E949: Datei wurde whrend des Schreibens verndert"
-
-msgid "E512: Close failed"
-msgstr "E512: Fehler beim Schlieen"
-
-msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
-msgstr ""
-"E513: Schreibfehler, Umwandlung schlug fehl (leere 'fenc' um es zu erzwingen)"
-
-#, c-format
-msgid ""
-"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
-"override)"
-msgstr ""
-"E513: Schreibfehler, Konvertierung in Zeile %ld fehlgeschlagen (leere 'fenc' "
-"um es zu erzwingen)"
-
-msgid "E514: write error (file system full?)"
-msgstr "E514: Schreibfehler (Dateisystem voll?)"
-
-msgid " CONVERSION ERROR"
-msgstr "KONVERTIERUNGSFEHLER"
-
-#, c-format
-msgid " in line %ld;"
-msgstr " in Zeile %ld"
-
-msgid "[Device]"
-msgstr "[Ausgabegert]"
-
-msgid "[New]"
-msgstr "[Neu]"
-
-msgid " [a]"
-msgstr " [a]"
-
-msgid " appended"
-msgstr " angefgt"
-
-msgid " [w]"
-msgstr " [w]"
-
-msgid " written"
-msgstr " geschrieben"
-
-msgid "E205: Patchmode: can't save original file"
-msgstr "E205: patchmode: Original-Datei kann nicht gespeichert werden"
-
-msgid "E206: patchmode: can't touch empty original file"
-msgstr "E206: patchmode: leere Original-Datei kann nicht verndert werden"
-
-msgid "E207: Can't delete backup file"
-msgstr "E207: Backup-Datei kann nicht gelscht werden"
-
-msgid ""
-"\n"
-"WARNING: Original file may be lost or damaged\n"
-msgstr ""
-"\n"
-"ACHTUNG: Original-Datei knnte verloren oder beschdigt sein\n"
-
-msgid "don't quit the editor until the file is successfully written!"
-msgstr ""
-"beenden Sie nicht den Editor bis die Datei erfolgreich geschrieben wurde!"
-
msgid "[dos]"
msgstr "[dos]"
@@ -1708,12 +1687,6 @@ msgstr "[noeol]"
msgid "[Incomplete last line]"
msgstr "[Unvollstndige letzte Zeile]"
-msgid "WARNING: The file has been changed since reading it!!!"
-msgstr "ACHTUNG: Die Datei wurde seit dem letzten Lesen gendert!!!"
-
-msgid "Do you really want to write to it"
-msgstr "Mchten Sie sie wirklich schreiben"
-
#, c-format
msgid "E208: Error writing to \"%s\""
msgstr "E208: Fehler whrend des Schreibens nach \"%s\""
@@ -1792,6 +1765,24 @@ msgstr "E219: Es fehlt ein {."
msgid "E220: Missing }."
msgstr "E220: Es fehlt ein }."
+msgid "<empty>"
+msgstr "<leer>"
+
+msgid "E655: Too many symbolic links (cycle?)"
+msgstr "E655: Zu viele symbolische Links (zirkulr?)"
+
+msgid "Select Directory dialog"
+msgstr "Verzeichnis Auswahl Dialog"
+
+msgid "Save File dialog"
+msgstr "Datei Speichern Dialog"
+
+msgid "Open File dialog"
+msgstr "Datei ffnen Dialog"
+
+msgid "E338: Sorry, no file browser in console mode"
+msgstr "E338: Kein Datei-Dialog im Konsole-Modus"
+
msgid "E854: path too long for completion"
msgstr "E854: Pfad fr Vervollstndigung zu lang."
@@ -2696,6 +2687,16 @@ msgstr "E573: Ungltige Server ID verwendet: %s"
msgid "E251: VIM instance registry property is badly formed. Deleted!"
msgstr "E251: Registry-Eigenschaft der VIM Instanz ist fehlerhaft. Gelscht!"
+#, c-format
+msgid "%ld lines to indent... "
+msgstr "%ld Zeilen zum Einrcken... "
+
+#, c-format
+msgid "%ld line indented "
+msgid_plural "%ld lines indented "
+msgstr[0] "%ld Zeile eingerckt... "
+msgstr[1] "%ld Zeilen eingerckt... "
+
msgid " Keyword completion (^N^P)"
msgstr " Stichwort Vervollstndigung (^N^P)"
@@ -2804,6 +2805,10 @@ msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: Doppelter Schlssel im JSON: \"%s\""
#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: Argument von %s muss eine Liste oder ein Blob sein."
+
+#, c-format
msgid "E696: Missing comma in List: %s"
msgstr "E696: Fehlendes Komma in der Liste: %s"
@@ -2823,6 +2828,24 @@ msgstr "E702: Die Vergleichsfunktion der Sortierung ist fehlgeschlagen."
msgid "E882: Uniq compare function failed"
msgstr "E882: Die Uniq Vergleichsfunktion ist fehlgeschlagen."
+msgid "map() argument"
+msgstr "map() Argument"
+
+msgid "filter() argument"
+msgstr "filter() Argument"
+
+msgid "add() argument"
+msgstr "add() Argument"
+
+msgid "insert() argument"
+msgstr "insert() Argument"
+
+msgid "remove() argument"
+msgstr "remove() Argument"
+
+msgid "reverse() argument"
+msgstr "reverse() Argument"
+
msgid "Unknown option argument"
msgstr "Unbekanntes Optionsargument"
@@ -3938,18 +3961,6 @@ msgstr ""
"Alle &Verwerfen\n"
"&Abbrechen"
-msgid "Select Directory dialog"
-msgstr "Verzeichnis Auswahl Dialog"
-
-msgid "Save File dialog"
-msgstr "Datei Speichern Dialog"
-
-msgid "Open File dialog"
-msgstr "Datei ffnen Dialog"
-
-msgid "E338: Sorry, no file browser in console mode"
-msgstr "E338: Kein Datei-Dialog im Konsole-Modus"
-
msgid "E766: Insufficient arguments for printf()"
msgstr "E766: Zu wenige Argumente fr printf()"
@@ -3985,6 +3996,9 @@ msgstr " (Unterbrochen)"
msgid "Beep!"
msgstr "Beep!"
+msgid "E677: Error writing temp file"
+msgstr "E677: Fehler beim Schreiben einer temporren Datei"
+
msgid "ERROR: "
msgstr "FEHLER: "
@@ -4055,12 +4069,6 @@ msgstr "E505: %s ist schreibgeschtzt (erzwinge mit !)"
msgid "E349: No identifier under cursor"
msgstr "E349: Kein Merkmal unter dem Cursor"
-msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: 'operatorfunc' is empty"
-
-msgid "E775: Eval feature not available"
-msgstr "E775: Eval Eigenschaft nicht verfgbar"
-
msgid "Warning: terminal cannot highlight"
msgstr "Achtung: Terminal untersttzt keine Hervorhebung"
@@ -4101,19 +4109,6 @@ msgid_plural "%ld lines %sed %d times"
msgstr[0] "%ld Zeilen %s %d Mal"
msgstr[1] "%ld Zeilen %s %d Mal"
-#, c-format
-msgid "%ld lines to indent... "
-msgstr "%ld Zeilen zum Einrcken... "
-
-#, c-format
-msgid "%ld line indented "
-msgid_plural "%ld lines indented "
-msgstr[0] "%ld Zeile eingerckt... "
-msgstr[1] "%ld Zeilen eingerckt... "
-
-msgid "E748: No previously used register"
-msgstr "E748: Kein bereits verwendetes Register"
-
msgid "cannot yank; delete anyway"
msgstr "kann nicht kopieren; lsche trotzdem"
@@ -4124,44 +4119,6 @@ msgstr[0] "%ld Zeile gendert"
msgstr[1] "%ld Zeilen gendert"
#, c-format
-msgid "freeing %ld lines"
-msgstr "gebe %ld Zeilen frei"
-
-#, c-format
-msgid " into \"%c"
-msgstr " in \"%c"
-
-#, c-format
-msgid "block of %ld line yanked%s"
-msgid_plural "block of %ld lines yanked%s"
-msgstr[0] "Block von %ld Zeile kopiert%s"
-msgstr[1] "Block von %ld Zeilen kopiert%s"
-
-#, c-format
-msgid "%ld line yanked%s"
-msgid_plural "%ld lines yanked%s"
-msgstr[0] "%ld Zeile kopiert%s"
-msgstr[1] "%ld Zeilen kopiert%s"
-
-#, c-format
-msgid "E353: Nothing in register %s"
-msgstr "E353: Register %s ist leer"
-
-msgid ""
-"\n"
-"--- Registers ---"
-msgstr ""
-"\n"
-"--- Register ---"
-
-msgid ""
-"E883: search pattern and expression register may not contain two or more "
-"lines"
-msgstr ""
-"E883: Suchmuster- und Ausdrucksregister drfen nicht mehr als 1 Zeile "
-"enthalten."
-
-#, c-format
msgid "%ld Cols; "
msgstr "%ld Spalten; "
@@ -4195,8 +4152,11 @@ msgstr ""
msgid "(+%lld for BOM)"
msgstr "(+%lld fr BOM)"
-msgid "Thanks for flying Vim"
-msgstr "Danke fr die Benutzung von Vim"
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' is empty"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: Eval Eigenschaft nicht verfgbar"
msgid "E518: Unknown option"
msgstr "E518: Unbekannte Option"
@@ -4221,6 +4181,65 @@ msgstr "E521: Zahl bentigt nach ="
msgid "E522: Not found in termcap"
msgstr "E522: Nicht gefunden in 'termcap'"
+msgid "E946: Cannot make a terminal with running job modifiable"
+msgstr "E946: Kann ein Terminal mit einem laufenden Job nicht modifizieren"
+
+msgid "E590: A preview window already exists"
+msgstr "E590: Ein Vorschaufenster existiert bereits"
+
+msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
+msgstr "W17: Arabisch bentigt UTF-8, bitte ':set encoding=utf-8' ausfhren"
+
+msgid "E954: 24-bit colors are not supported on this environment"
+msgstr "E954: 24-bit Farben werden in dieser Umgebung nicht untersttzt"
+
+#, c-format
+msgid "E593: Need at least %d lines"
+msgstr "E593: Mindestens %d Zeilen werden bentigt"
+
+#, c-format
+msgid "E594: Need at least %d columns"
+msgstr "E594: Mindestens %d Spalten werden bentigt"
+
+#, c-format
+msgid "E355: Unknown option: %s"
+msgstr "E355: Unbekannte Option: %s"
+
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: Zahl bentigt: &%s = '%s'"
+
+msgid ""
+"\n"
+"--- Terminal codes ---"
+msgstr ""
+"\n"
+"--- Terminal Codes ---"
+
+msgid ""
+"\n"
+"--- Global option values ---"
+msgstr ""
+"\n"
+"--- Globale Optionswerte ---"
+
+msgid ""
+"\n"
+"--- Local option values ---"
+msgstr ""
+"\n"
+"--- Lokale Optionswerte ---"
+
+msgid ""
+"\n"
+"--- Options ---"
+msgstr ""
+"\n"
+"--- Optionen ---"
+
+msgid "E356: get_varp ERROR"
+msgstr "E356: get_varp FEHLER"
+
#, c-format
msgid "E539: Illegal character <%s>"
msgstr "E539: Unzulssiges Zeichen <%s>"
@@ -4229,6 +4248,15 @@ msgstr "E539: Unzulssiges Zeichen <%s>"
msgid "For option %s"
msgstr "Fr Option %s"
+msgid "E540: Unclosed expression sequence"
+msgstr "E540: Nicht-geschlossene Ausdrucksfolge"
+
+msgid "E541: too many items"
+msgstr "E541: Zu viele Elemente"
+
+msgid "E542: unbalanced groups"
+msgstr "E542: Unausgewogene Gruppen"
+
msgid "E529: Cannot set 'term' to empty string"
msgstr "E529: 'term' darf keine leere Zeichenkette sein"
@@ -4299,77 +4327,6 @@ msgstr "E536: Komma bentigt"
msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' muss leer sein oder %s enthalten"
-msgid "E538: No mouse support"
-msgstr "E538: Keine Maus-Untersttzung"
-
-msgid "E540: Unclosed expression sequence"
-msgstr "E540: Nicht-geschlossene Ausdrucksfolge"
-
-msgid "E541: too many items"
-msgstr "E541: Zu viele Elemente"
-
-msgid "E542: unbalanced groups"
-msgstr "E542: Unausgewogene Gruppen"
-
-msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr "E946: Kann ein Terminal mit einem laufenden Job nicht modifizieren"
-
-msgid "E590: A preview window already exists"
-msgstr "E590: Ein Vorschaufenster existiert bereits"
-
-msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr "W17: Arabisch bentigt UTF-8, bitte ':set encoding=utf-8' ausfhren"
-
-msgid "E954: 24-bit colors are not supported on this environment"
-msgstr "E954: 24-bit Farben werden in dieser Umgebung nicht untersttzt"
-
-#, c-format
-msgid "E593: Need at least %d lines"
-msgstr "E593: Mindestens %d Zeilen werden bentigt"
-
-#, c-format
-msgid "E594: Need at least %d columns"
-msgstr "E594: Mindestens %d Spalten werden bentigt"
-
-#, c-format
-msgid "E355: Unknown option: %s"
-msgstr "E355: Unbekannte Option: %s"
-
-#, c-format
-msgid "E521: Number required: &%s = '%s'"
-msgstr "E521: Zahl bentigt: &%s = '%s'"
-
-msgid ""
-"\n"
-"--- Terminal codes ---"
-msgstr ""
-"\n"
-"--- Terminal Codes ---"
-
-msgid ""
-"\n"
-"--- Global option values ---"
-msgstr ""
-"\n"
-"--- Globale Optionswerte ---"
-
-msgid ""
-"\n"
-"--- Local option values ---"
-msgstr ""
-"\n"
-"--- Lokale Optionswerte ---"
-
-msgid ""
-"\n"
-"--- Options ---"
-msgstr ""
-"\n"
-"--- Optionen ---"
-
-msgid "E356: get_varp ERROR"
-msgstr "E356: get_varp FEHLER"
-
msgid "cannot open "
msgstr "kann nicht ffnen"
@@ -4595,13 +4552,17 @@ msgstr "Vim Achtung"
msgid "shell returned %d"
msgstr "Shell gab %d zurck"
+msgid "E278: Cannot put a terminal buffer in a popup window"
+msgstr ""
+"E278: Terminal kann nicht in einem Popup-Fenster geffnet werdent."
+
#, c-format
msgid "E997: Tabpage not found: %d"
msgstr "E997: Konnte Reiter \"%d\" nicht finden"
#, c-format
msgid "E993: window %d is not a popup window"
-msgstr "E993: Fenster %d is kein Popup-Fenster"
+msgstr "E993: Fenster %d ist kein Popup-Fenster"
msgid "E994: Not allowed in a popup window"
msgstr "E994: Nicht innerhalb eines Popup-Fensters erlaubt"
@@ -4733,37 +4694,26 @@ msgstr "E70: %s%%[] ist leer"
msgid "E956: Cannot use pattern recursively"
msgstr "E956: Kann Muster nicht rekursiv ausfhren"
-msgid "E65: Illegal back reference"
-msgstr "E65: Ungltige Rckreferenz"
-
-msgid "E339: Pattern too long"
-msgstr "E339: Muster zu lang"
-
-msgid "E50: Too many \\z("
-msgstr "E50: Zu viele \\z("
-
#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: Zu viele %s("
-
-msgid "E52: Unmatched \\z("
-msgstr "E52: \\z( ohne Gegenstck"
+msgid "E554: Syntax error in %s{...}"
+msgstr "E554: Syntaxfehler in %s{...}"
#, c-format
-msgid "E59: invalid character after %s@"
-msgstr "E59: Ungltiges Zeichen nach %s@"
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA regexp) kann nicht wiederholt werden %s"
-#, c-format
-msgid "E60: Too many complex %s{...}s"
-msgstr "E60: Zu viele komplexe %s{...}s"
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: Auf \\%#= muss 0, 1, oder 2 folgen. Die automatische Engine wird "
+"genutzt "
-#, c-format
-msgid "E61: Nested %s*"
-msgstr "E61: Verschachteltes %s*"
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Wechsele zur Backtracking RE Engine fr Muster: "
-#, c-format
-msgid "E62: Nested %s%c"
-msgstr "E62: Verschachteltes %s%c"
+msgid "E65: Illegal back reference"
+msgstr "E65: Ungltige Rckreferenz"
msgid "E63: invalid use of \\_"
msgstr "E63: Ungltige Verwendung von \\_"
@@ -4784,25 +4734,36 @@ msgid "E71: Invalid character after %s%%"
msgstr "E71: Ungltiges Zeichen nach %s%%"
#, c-format
-msgid "E554: Syntax error in %s{...}"
-msgstr "E554: Syntaxfehler in %s{...}"
+msgid "E59: invalid character after %s@"
+msgstr "E59: Ungltiges Zeichen nach %s@"
-msgid "External submatches:\n"
-msgstr "Externe 'submatches':\n"
+#, c-format
+msgid "E60: Too many complex %s{...}s"
+msgstr "E60: Zu viele komplexe %s{...}s"
#, c-format
-msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA regexp) kann nicht wiederholt werden %s"
+msgid "E61: Nested %s*"
+msgstr "E61: Verschachteltes %s*"
-msgid ""
-"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
-"used "
-msgstr ""
-"E864: Auf \\%#= muss 0, 1, oder 2 folgen. Die automatische Engine wird "
-"genutzt "
+#, c-format
+msgid "E62: Nested %s%c"
+msgstr "E62: Verschachteltes %s%c"
-msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Wechsele zur Backtracking RE Engine fr Muster: "
+msgid "E50: Too many \\z("
+msgstr "E50: Zu viele \\z("
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: Zu viele %s("
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: \\z( ohne Gegenstck"
+
+msgid "E339: Pattern too long"
+msgstr "E339: Muster zu lang"
+
+msgid "External submatches:\n"
+msgstr "Externe 'submatches':\n"
msgid "E865: (NFA) Regexp end encountered prematurely"
msgstr "E865: (NFA) Regexp Ende verfrht aufgetreten"
@@ -4869,6 +4830,47 @@ msgstr "E876: (NFA regexp) Nicht genug Speicher zum Speichern der NFA"
msgid "E878: (NFA) Could not allocate memory for branch traversal!"
msgstr "E878: (NFA) Konnte nicht Speicher allokieren um ste zu durchlaufen!"
+msgid "E748: No previously used register"
+msgstr "E748: Kein bereits verwendetes Register"
+
+#, c-format
+msgid "freeing %ld lines"
+msgstr "gebe %ld Zeilen frei"
+
+#, c-format
+msgid " into \"%c"
+msgstr " in \"%c"
+
+#, c-format
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "Block von %ld Zeile kopiert%s"
+msgstr[1] "Block von %ld Zeilen kopiert%s"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld Zeile kopiert%s"
+msgstr[1] "%ld Zeilen kopiert%s"
+
+#, c-format
+msgid "E353: Nothing in register %s"
+msgstr "E353: Register %s ist leer"
+
+msgid ""
+"\n"
+"--- Registers ---"
+msgstr ""
+"\n"
+"--- Register ---"
+
+msgid ""
+"E883: search pattern and expression register may not contain two or more "
+"lines"
+msgstr ""
+"E883: Suchmuster- und Ausdrucksregister drfen nicht mehr als 1 Zeile "
+"enthalten."
+
msgid " VREPLACE"
msgstr " V-ERSETZEN"
@@ -5139,21 +5141,6 @@ msgstr "E797: SpellFileMissing-Autokommando lschte Puffer"
msgid "Warning: region %s not supported"
msgstr "Achtung: Region %s nicht untersttzt"
-msgid "Sorry, no suggestions"
-msgstr "Leider keine Vorschlge"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "Leider nur %ld Vorschlge"
-
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "ndere \"%.*s\" nach:"
-
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < \"%.*s\""
-
msgid "E752: No previous spell replacement"
msgstr "E752: Keine vorhergehende Ersetzung"
@@ -5486,6 +5473,21 @@ msgstr ""
msgid "E783: duplicate char in MAP entry"
msgstr "E783: Doppeltes Zeichen im MAP Eintrag"
+msgid "Sorry, no suggestions"
+msgstr "Leider keine Vorschlge"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "Leider nur %ld Vorschlge"
+
+#, c-format
+msgid "Change \"%.*s\" to:"
+msgstr "ndere \"%.*s\" nach:"
+
+#, c-format
+msgid " < \"%.*s\""
+msgstr " < \"%.*s\""
+
msgid "No Syntax items defined for this buffer"
msgstr "Keine Syntax-Elemente fr diesen Puffer definiert"
@@ -5671,7 +5673,8 @@ msgid "E556: at top of tag stack"
msgstr "E556: Am Anfang des Tag-Stacks"
msgid "E986: cannot modify the tag stack within tagfunc"
-msgstr "E986: Kann den Tag-Stack nicht innerhalb der tagfunc Funktion verndern"
+msgstr ""
+"E986: Kann den Tag-Stack nicht innerhalb der tagfunc Funktion verndern"
msgid "E987: invalid return value from tagfunc"
msgstr "E987: Ungltiges Ergebnis der tagfunc Funktion"
@@ -6690,7 +6693,8 @@ msgid "E444: Cannot close last window"
msgstr "E444: Letztes Fenster kann nicht geschlossen werden"
msgid "E813: Cannot close autocmd or popup window"
-msgstr "E813: Autokommando-Fenster oder Popup-Fenster kann nicht geschlossen werden"
+msgstr ""
+"E813: Autokommando-Fenster oder Popup-Fenster kann nicht geschlossen werden"
msgid "E814: Cannot close window, only autocmd window would remain"
msgstr ""
diff --git a/src/po/gvim.desktop.in b/src/po/gvim.desktop.in
index b41bcc0..55ee1a7 100644
--- a/src/po/gvim.desktop.in
+++ b/src/po/gvim.desktop.in
@@ -74,7 +74,6 @@ Comment[sv]=Redigera textfiler
Comment[ta]=உரை கோப்புகளை தொகுக்கவும்
Comment[th]=แก้ไขแฟ้มข้อความ
Comment[tk]=Metin faýllary editle
-Comment[tr]=Metin dosyalarını düzenle
Comment[uk]=Редактор текстових файлів
Comment[vi]=Soạn thảo tập tin văn bản
Comment[wa]=Asspougnî des fitchîs tecses
diff --git a/src/po/tr.po b/src/po/tr.po
new file mode 100644
index 0000000..0303044
--- /dev/null
+++ b/src/po/tr.po
@@ -0,0 +1,7272 @@
+# Turkish translations for Vim
+# PACKAGE paketi için Türkçe çeviriler.
+# Copyright (C) 2019 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Emir SARI <bitigchi@me.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-09 19:57+0300\n"
+"PO-Revision-Date: 2019-10-09 19:58+0300\n"
+"Last-Translator: Emir SARI <bitigchi@me.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "E163: There is only one file to edit"
+msgstr "E163: Düzenlenecek yalnızca bir dosya var"
+
+msgid "E164: Cannot go before first file"
+msgstr "E164: İlk dosyadan öncesine gidilemez"
+
+msgid "E165: Cannot go beyond last file"
+msgstr "E165: Son dosyadan öteye gidilemez"
+
+msgid "E249: window layout changed unexpectedly"
+msgstr "E249: Pencere yerleşimi beklenmedik bir biçimde değişti"
+
+msgid "--Deleted--"
+msgstr "--Silindi--"
+
+#, c-format
+msgid "auto-removing autocommand: %s <buffer=%d>"
+msgstr "otokomut kendiliğinden kaldırılıyor: %s <buffer=%d>"
+
+#, c-format
+msgid "E367: No such group: \"%s\""
+msgstr "E367: Böyle bir grup yok: \"%s\""
+
+msgid "E936: Cannot delete the current group"
+msgstr "E936: Mevcut grup silinemiyor"
+
+msgid "W19: Deleting augroup that is still in use"
+msgstr "W19: Kullanımda olan otokomut grubu siliniyor"
+
+#, c-format
+msgid "E215: Illegal character after *: %s"
+msgstr "E215: * sonrası izin verilmeyen karakter: %s"
+
+#, c-format
+msgid "E216: No such event: %s"
+msgstr "E216: Böyle bir olay yok: %s"
+
+#, c-format
+msgid "E216: No such group or event: %s"
+msgstr "E216: Böyle bir grup veya olay yok: %s"
+
+msgid ""
+"\n"
+"--- Autocommands ---"
+msgstr ""
+"\n"
+"--- Otokomutlar ---"
+
+#, c-format
+msgid "E680: <buffer=%d>: invalid buffer number "
+msgstr "E680: <buffer=%d>: geçersiz arabellek numarası"
+
+msgid "E217: Can't execute autocommands for ALL events"
+msgstr "E217: Otokomutlar BÜTÜN olaylar için çalıştırılamıyor"
+
+msgid "No matching autocommands"
+msgstr "Eşleşen otokomut yok"
+
+msgid "E218: autocommand nesting too deep"
+msgstr "E218: Çok fazla iç içe geçmiş otokomut"
+
+#, c-format
+msgid "%s Autocommands for \"%s\""
+msgstr "\"%s\" için %s otokomutlar"
+
+#, c-format
+msgid "Executing %s"
+msgstr "%s çalıştırılıyor"
+
+#, c-format
+msgid "autocommand %s"
+msgstr "%s otokomutu"
+
+msgid "E831: bf_key_init() called with empty password"
+msgstr "E831: bf_key_init() boş bir şifre ile çağrıldı"
+
+msgid "E820: sizeof(uint32_t) != 4"
+msgstr "E820: sizeof(uint32_t) != 4"
+
+msgid "E817: Blowfish big/little endian use wrong"
+msgstr "E817: Blowfish yüksek/düşük son haneli kullanımı yanlış"
+
+msgid "E818: sha256 test failed"
+msgstr "E818: sha256 testi başarısız oldu"
+
+msgid "E819: Blowfish test failed"
+msgstr "E819: Blowfish testi başarısız oldu"
+
+msgid "[Location List]"
+msgstr "[Konum listesi]"
+
+msgid "[Quickfix List]"
+msgstr "[Yama listesi]"
+
+msgid "E855: Autocommands caused command to abort"
+msgstr "E855: Otokomutlar komutun durmasına neden oldu"
+
+msgid "E82: Cannot allocate any buffer, exiting..."
+msgstr "E82: Arabellek ayrılamadı, çıkılıyor..."
+
+msgid "E83: Cannot allocate buffer, using other one..."
+msgstr "E83: Arabellek ayrılamadı, başka bir tane kullanılıyor..."
+
+msgid "E931: Buffer cannot be registered"
+msgstr "E931: Arabellek kaydedilemedi"
+
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: Kullanımda olan bir arabellek silinmeye çalışılıyor: %s"
+
+msgid "E515: No buffers were unloaded"
+msgstr "E515: Hiçbir arabellek kaldırılmadı"
+
+msgid "E516: No buffers were deleted"
+msgstr "E516: Hiçbir arabellek silinmedi"
+
+msgid "E517: No buffers were wiped out"
+msgstr "E517: Hiçbir arabellek yok edilmedi"
+
+#, c-format
+msgid "%d buffer unloaded"
+msgid_plural "%d buffers unloaded"
+msgstr[0] "%d arabellek kaldırıldı"
+msgstr[1] "%d arabellek kaldırıldı"
+
+#, c-format
+msgid "%d buffer deleted"
+msgid_plural "%d buffers deleted"
+msgstr[0] "%d arabellek silindi"
+msgstr[1] "%d arabellek silindi"
+
+#, c-format
+msgid "%d buffer wiped out"
+msgid_plural "%d buffers wiped out"
+msgstr[0] "%d arabellek yok edildi"
+msgstr[1] "%d arabellek yok edildi"
+
+msgid "E90: Cannot unload last buffer"
+msgstr "E90: Son arabellek kaldırılamıyor"
+
+msgid "E84: No modified buffer found"
+msgstr "E84: Değiştirilmiş bir arabellek bulunamadı"
+
+msgid "E85: There is no listed buffer"
+msgstr "E85: Listelenmiş bir arabellek yok"
+
+msgid "E87: Cannot go beyond last buffer"
+msgstr "E87: Son arabellekten öteye gidilemez"
+
+msgid "E88: Cannot go before first buffer"
+msgstr "E88: İlk arabellekten öncesine gidilemez"
+
+#, c-format
+msgid "E89: No write since last change for buffer %d (add ! to override)"
+msgstr ""
+"E89: Arabellek %d son eklemeden beri yazılmamış (yoksaymak için ! ekleyin)"
+
+msgid "E948: Job still running (add ! to end the job)"
+msgstr "E948: İş hâlâ sürüyor (bitirmek için ! ekleyin)"
+
+msgid "E37: No write since last change (add ! to override)"
+msgstr "E37: Son değişiklikten beri yazma yok (yoksaymak için ! ekleyin)"
+
+msgid "E948: Job still running"
+msgstr "E948: İş hâlâ sürüyor"
+
+msgid "E37: No write since last change"
+msgstr "E37: Son değişiklikten beri yazma yok"
+
+msgid "W14: Warning: List of file names overflow"
+msgstr "W14: Uyarı: Dosya adları taşımı"
+
+#, c-format
+msgid "E92: Buffer %d not found"
+msgstr "E92: Arabellek %d bulunamadı"
+
+#, c-format
+msgid "E93: More than one match for %s"
+msgstr "E93: %s için birden çok eşleşme"
+
+#, c-format
+msgid "E94: No matching buffer for %s"
+msgstr "E94: %s için eşleşen arabellek yok"
+
+#, c-format
+msgid "line %ld"
+msgstr "%ld. satır"
+
+msgid "E95: Buffer with this name already exists"
+msgstr "E95: Aynı adda bir arabellek halihazırda var"
+
+msgid " [Modified]"
+msgstr " [Değiştirildi]"
+
+msgid "[Not edited]"
+msgstr "[Değiştirilmedi]"
+
+msgid "[New file]"
+msgstr "[Yeni dosya]"
+
+msgid "[Read errors]"
+msgstr "[Okuma hataları]"
+
+msgid "[RO]"
+msgstr "[RO]"
+
+msgid "[readonly]"
+msgstr "[saltokunur]"
+
+#, c-format
+msgid "%ld line --%d%%--"
+msgid_plural "%ld lines --%d%%--"
+msgstr[0] "%ld satır --%d%%"
+msgstr[1] "%ld satır --%d%%"
+
+#, c-format
+msgid "line %ld of %ld --%d%%-- col "
+msgstr "satır %ld/%ld --%d%%-- sütun "
+
+msgid "[No Name]"
+msgstr "[Adsız]"
+
+msgid "help"
+msgstr "yardım"
+
+msgid "[Help]"
+msgstr "[Yardım]"
+
+msgid "[Preview]"
+msgstr "[Önizleme]"
+
+msgid "All"
+msgstr "Tümü"
+
+msgid "Bot"
+msgstr "En alt"
+
+msgid "Top"
+msgstr "En üst"
+
+msgid "E382: Cannot write, 'buftype' option is set"
+msgstr "E382: Yazılamıyor, 'buftype' seçeneği ayarlanmamış"
+
+msgid "[Prompt]"
+msgstr "[İstem]"
+
+msgid "[Popup]"
+msgstr "[Açılır pencere]"
+
+msgid "[Scratch]"
+msgstr "[Geçici]"
+
+msgid "WARNING: The file has been changed since reading it!!!"
+msgstr "UYARI: Bu dosya açıldıktan sonra başkası tarafından değiştirilmiş!!!"
+
+msgid "Do you really want to write to it"
+msgstr "Yine de yazmak istiyor musunuz?"
+
+msgid "E676: No matching autocommands for acwrite buffer"
+msgstr "E676: acwrite arabelleği için eşleşen bir otokomut yok"
+
+msgid "E203: Autocommands deleted or unloaded buffer to be written"
+msgstr "E203: Otokomutlar silinmiş veya yazılması için arabelleği kaldırmışlar"
+
+msgid "E204: Autocommand changed number of lines in unexpected way"
+msgstr "E204: Otokomut satır sayısını beklenmeyen bir biçimde değiştirdi"
+
+msgid "NetBeans disallows writes of unmodified buffers"
+msgstr "NetBeans değiştirilmemiş arabelleklerin yazılmasına izin vermez"
+
+msgid "Partial writes disallowed for NetBeans buffers"
+msgstr "NetBeans arabellekleri için kısmi yazmalara izin verilmez"
+
+msgid "is a directory"
+msgstr "bir dizin"
+
+msgid "is not a file or writable device"
+msgstr "bir dosya veya yazılabilir aygıt değil"
+
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "aygıta yazma 'opendevice' seçeneği ile kapatılmış"
+
+msgid "is read-only (add ! to override)"
+msgstr "saltokunur (yoksaymak için ! ekleyin)"
+
+msgid "E506: Can't write to backup file (add ! to override)"
+msgstr "E506: Yedek dosyasına yazılamıyor (yoksaymak için ! ekleyin)"
+
+msgid "E507: Close error for backup file (add ! to override)"
+msgstr "E507: Yedek dosya için kapama hatası (yoksaymak için ! ekleyin)"
+
+msgid "E508: Can't read file for backup (add ! to override)"
+msgstr "E508: Yedek dosyası okunamıyor (yoksaymak için ! ekleyin)"
+
+msgid "E509: Cannot create backup file (add ! to override)"
+msgstr "E509: Yedek dosyası oluşturulamıyor (yoksaymak için ! ekleyin)"
+
+msgid "E510: Can't make backup file (add ! to override)"
+msgstr "E510: Yedek dosyası yapılamıyor (yoksaymak için ! ekleyin) "
+
+msgid "E214: Can't find temp file for writing"
+msgstr "E214: Yazma için geçici dosya bulunamıyor"
+
+msgid "E213: Cannot convert (add ! to write without conversion)"
+msgstr "E213: Dönüştürülemiyor (dönüştürmeden yazmak için ! ekleyin)"
+
+msgid "E166: Can't open linked file for writing"
+msgstr "E166: Bağlı dosya yazma için açılamıyor"
+
+msgid "E212: Can't open file for writing"
+msgstr "E212: Dosya yazma için açılamıyor"
+
+msgid "E949: File changed while writing"
+msgstr "E949: Dosya yazma sırasında değiştirildi"
+
+msgid "E512: Close failed"
+msgstr "E512: Kapatma başarısız oldu"
+
+#, c-format
+msgid ""
+"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"override)"
+msgstr ""
+"E513: Yazma hatası, %ld. satırda dönüştürme başarısız (yoksaymak için dosya "
+"kodlamasını boş yapın)"
+
+msgid "E514: write error (file system full?)"
+msgstr "E514: Yazma hatası (dosya sistemi dolu mu?)"
+
+msgid " CONVERSION ERROR"
+msgstr " DÖNÜŞTÜRME HATASI"
+
+#, c-format
+msgid " in line %ld;"
+msgstr " %ld. satırda;"
+
+msgid "[NOT converted]"
+msgstr "[dönüştürülmedi]"
+
+msgid "[converted]"
+msgstr "[dönüştürüldü]"
+
+msgid "[Device]"
+msgstr "[Aygıt]"
+
+msgid "[New]"
+msgstr "[Yeni]"
+
+msgid "[New File]"
+msgstr "[Yeni Dosya]"
+
+msgid " [a]"
+msgstr " [a]"
+
+msgid " appended"
+msgstr " iliştirildi"
+
+msgid " [w]"
+msgstr " [w]"
+
+msgid " written"
+msgstr " yazıldı"
+
+msgid "E205: Patchmode: can't save original file"
+msgstr "E205: Yama kipi: Orijinal dosya kaydedilemiyor"
+
+msgid "E206: patchmode: can't touch empty original file"
+msgstr "E206: Yama kipi: Orijinal boş dosyaya dokunulamıyor"
+
+msgid "E207: Can't delete backup file"
+msgstr "E207: Yedek dosyası silinemiyor"
+
+msgid ""
+"\n"
+"WARNING: Original file may be lost or damaged\n"
+msgstr ""
+"\n"
+"UYARI: Orijinal dosya kaybolmuş veya hasar görmüş olabilir\n"
+
+msgid "don't quit the editor until the file is successfully written!"
+msgstr "dosya başarılı bir biçimde yazılana kadar düzenleyiciden çıkmayın!"
+
+msgid "W10: Warning: Changing a readonly file"
+msgstr "W10: Uyarı: Saltokunur bir dosya değiştiriliyor"
+
+msgid "E902: Cannot connect to port"
+msgstr "E902: Porta bağlanılamıyor"
+
+msgid "E901: gethostbyname() in channel_open()"
+msgstr "E901: channel_open() içinde gethostbyname()"
+
+msgid "E898: socket() in channel_open()"
+msgstr "E898: channel_open() içinde socket()"
+
+msgid "E903: received command with non-string argument"
+msgstr "E903: Alınan komut dizi olmayan bir değişken içeriyor"
+
+msgid "E904: last argument for expr/call must be a number"
+msgstr "E904: İfadenin/çağrının son değişkeni bir sayı olmalıdır"
+
+msgid "E904: third argument for call must be a list"
+msgstr "E904: Çağrının üçüncü değişkeni bir liste olmalıdır"
+
+#, c-format
+msgid "E905: received unknown command: %s"
+msgstr "E905: Bilinmeyen komut alındı: %s"
+
+msgid "E906: not an open channel"
+msgstr "E906: Açık bir kanal değil"
+
+#, c-format
+msgid "E630: %s(): write while not connected"
+msgstr "E630: %s(): Bağlantı yokken yaz"
+
+#, c-format
+msgid "E631: %s(): write failed"
+msgstr "E631: %s(): Yazma başarısız"
+
+#, c-format
+msgid "E917: Cannot use a callback with %s()"
+msgstr "E917: %s() ile geri çağırma kullanılamaz"
+
+msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
+msgstr "E912: ch_evalexpr()/ch_sendexpr() raw/nl kanalları ile kullanılamaz"
+
+msgid "E920: _io file requires _name to be set"
+msgstr "E920: _io dosyası _name ayarlı olmasını gerektirir"
+
+msgid "E915: in_io buffer requires in_buf or in_name to be set"
+msgstr "E915: in_io arabelleği in_buf veya in_name ayarlı olmasını gerektirir"
+
+#, c-format
+msgid "E918: buffer must be loaded: %s"
+msgstr "E918: arabellek yüklenmiş olmalıdır: %s"
+
+msgid "E916: not a valid job"
+msgstr "E916: Geçerli bir iş değil"
+
+msgid "tagname"
+msgstr "etiket adı"
+
+msgid " kind file\n"
+msgstr " dosya türü\n"
+
+msgid "'history' option is zero"
+msgstr "'history' seçeneği sıfır"
+
+msgid "E821: File is encrypted with unknown method"
+msgstr "E821: Dosya bilinmeyen bir yöntemle şifrelenmiş"
+
+msgid "Warning: Using a weak encryption method; see :help 'cm'"
+msgstr "Uyarı: Zayıf bir şifreleme yöntemi kullanılıyor; bilgi için: :help 'cm'"
+
+msgid "Enter encryption key: "
+msgstr "Şifreleme anahtarı girin: "
+
+msgid "Enter same key again: "
+msgstr "Aynı anahtarı yeniden girin: "
+
+msgid "Keys don't match!"
+msgstr "Anahtarlar eşleşmiyor!"
+
+msgid "[crypted]"
+msgstr "[şifreli]"
+
+msgid "Entering Debug mode. Type \"cont\" to continue."
+msgstr "Hata Ayıklama kipine giriliyor. Sürdürmek için \"cont\" yazın."
+
+#, c-format
+msgid "Oldval = \"%s\""
+msgstr "Eski değer = \"%s\""
+
+# debugger.c:103
+#, c-format
+msgid "Newval = \"%s\""
+msgstr "Yeni değer = \"%s\""
+
+#, c-format
+msgid "line %ld: %s"
+msgstr "%ld. satır: %s"
+
+#, c-format
+msgid "cmd: %s"
+msgstr "komut: %s"
+
+msgid "frame is zero"
+msgstr "çerçeve sıfır"
+
+#, c-format
+msgid "frame at highest level: %d"
+msgstr "çerçeve en yüksek düzeyde: %d"
+
+#, c-format
+msgid "Breakpoint in \"%s%s\" line %ld"
+msgstr "Kesme noktası şurada: \"%s%s\", %ld. satır"
+
+#, c-format
+msgid "E161: Breakpoint not found: %s"
+msgstr "E161: Kesme noktası bulunamadı: %s"
+
+msgid "No breakpoints defined"
+msgstr "Hiçbir kesme noktası tanımlanmamış"
+
+#, c-format
+msgid "%3d %s %s line %ld"
+msgstr "%3d %s %s %ld. satır"
+
+#, c-format
+msgid "%3d expr %s"
+msgstr "%3d ifade %s"
+
+#, c-format
+msgid "E720: Missing colon in Dictionary: %s"
+msgstr "E720: Sözlükte eksik iki nokta: %s"
+
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: Sözlükte yinelenmiş anahtar: \"%s\""
+
+#, c-format
+msgid "E722: Missing comma in Dictionary: %s"
+msgstr "E722: Sözlükte eksik virgül: %s"
+
+#, c-format
+msgid "E723: Missing end of Dictionary '}': %s"
+msgstr "E723: '}' sözlük sonu eksik: %s"
+
+msgid "extend() argument"
+msgstr "extend() değişkeni"
+
+#, c-format
+msgid "E737: Key already exists: %s"
+msgstr "E737: Anahtar halihazırda var: %s"
+
+#, c-format
+msgid "E96: Cannot diff more than %d buffers"
+msgstr "E96: %d arabellekten fazlasında karşılaştırma yapılamıyor"
+
+#, c-format
+msgid "Not enough memory to use internal diff for buffer \"%s\""
+msgstr "\"%s\" arabelleği için karşılaştırma yapacak yeterli bellek yok"
+
+msgid "E810: Cannot read or write temp files"
+msgstr "E810: Geçici dosyalar okunamıyor veya yazılamıyor"
+
+msgid "E97: Cannot create diffs"
+msgstr "E97: Karşılaştırma yapılamıyor"
+
+msgid "E960: Problem creating the internal diff"
+msgstr "E960: Karşılaştırma hazırlanırken sorun"
+
+msgid "Patch file"
+msgstr "Yama dosyası"
+
+msgid "E816: Cannot read patch output"
+msgstr "E816: Yama çıktısı okunamıyor"
+
+msgid "E98: Cannot read diff output"
+msgstr "E98: Karşılaştırma çıktısı okunamıyor"
+
+msgid "E959: Invalid diff format."
+msgstr "E959: Geçersiz karşılaştırma biçimi"
+
+msgid "E99: Current buffer is not in diff mode"
+msgstr "E99: Şu anki arabellek karşılaştırma kipinde değil"
+
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: Karşılaştırma kipindeki başka hiçbir arabellek değiştirilebilir değil"
+
+msgid "E100: No other buffer in diff mode"
+msgstr "E100: Karşılaştırma kipinde başka hiçbir arabellek yok"
+
+#, c-format
+msgid "E102: Can't find buffer \"%s\""
+msgstr "E102: Arabellek \"%s\" bulunamıyor"
+
+#, c-format
+msgid "E103: Buffer \"%s\" is not in diff mode"
+msgstr "E103: Arabellek \"%s\" karşılaştırma kipinde değil"
+
+msgid "E787: Buffer changed unexpectedly"
+msgstr "E787: Arabellek beklenmeyen bir biçimde değiştirildi"
+
+msgid "E104: Escape not allowed in digraph"
+msgstr "E104: Kaçan ikili harflerde kullanılamaz"
+
+msgid "Custom"
+msgstr "Özel"
+
+msgid "Latin supplement"
+msgstr "Latin eklemeler"
+
+msgid "Greek and Coptic"
+msgstr "Yunan ve Antik Mısır"
+
+msgid "Cyrillic"
+msgstr "Kiril"
+
+msgid "Hebrew"
+msgstr "İbranice"
+
+msgid "Arabic"
+msgstr "Arapça"
+
+msgid "Latin extended"
+msgstr "Latin genişletilmiş"
+
+msgid "Greek extended"
+msgstr "Yunan genişletilmiş"
+
+msgid "Punctuation"
+msgstr "Noktalama"
+
+msgid "Super- and subscripts"
+msgstr "Üst ve alt simgeler"
+
+msgid "Currency"
+msgstr "Para birimi"
+
+msgid "Other"
+msgstr "Diğer"
+
+msgid "Roman numbers"
+msgstr "Roma rakamları"
+
+msgid "Arrows"
+msgstr "Oklar"
+
+msgid "Mathematical operators"
+msgstr "Matematiksel işleçler"
+
+msgid "Technical"
+msgstr "Teknik"
+
+msgid "Box drawing"
+msgstr "Kutu çizimi"
+
+msgid "Block elements"
+msgstr "Bloklar"
+
+msgid "Geometric shapes"
+msgstr "Geometrik biçimler"
+
+msgid "Symbols"
+msgstr "Semboller"
+
+msgid "Dingbats"
+msgstr "Harf simgeler"
+
+msgid "CJK symbols and punctuation"
+msgstr "ÇJK simgeler ve noktalama"
+
+msgid "Hiragana"
+msgstr "Hiragana"
+
+msgid "Katakana"
+msgstr "Katakana"
+
+msgid "Bopomofo"
+msgstr "Bopomofo"
+
+msgid "E544: Keymap file not found"
+msgstr "E544: Düğme eşlem dosyası bulunamadı"
+
+msgid "E105: Using :loadkeymap not in a sourced file"
+msgstr "E105: :loadkeymap kaynak alınmayan bir dosyada kullanılıyor"
+
+msgid "E791: Empty keymap entry"
+msgstr "E791: Boş düğme eşlem girişi"
+
+msgid "E111: Missing ']'"
+msgstr "E111: Eksik ']'"
+
+msgid "E719: Cannot use [:] with a Dictionary"
+msgstr "E719: [:] bir sözlük ile kullanılamıyor"
+
+msgid "E806: using Float as a String"
+msgstr "E806: Kayan, dizi olarak kullanılıyor"
+
+msgid "E274: No white space allowed before parenthesis"
+msgstr "E274: Ayraçtan önce boşluğa izin verilmez"
+
+msgid "E689: Can only index a List, Dictionary or Blob"
+msgstr "E689: Yalnızca bir liste, sözlük, veya ikili geniş nesne dizinlenebilir"
+
+msgid "E708: [:] must come last"
+msgstr "E708: [:] en son gelmelidir"
+
+msgid "E709: [:] requires a List or Blob value"
+msgstr "E709: [:] bir liste veya ikili geniş nesne değeri gerektirir"
+
+msgid "E972: Blob value does not have the right number of bytes"
+msgstr "E972: İkili geniş nesne değeri doğru bayt sayısına sahip değil"
+
+msgid "E996: Cannot lock a range"
+msgstr "E996: Erim kilitlenemiyor"
+
+msgid "E710: List value has more items than target"
+msgstr "E710: Liste değeri hedeften daha fazla ögeye sahip"
+
+msgid "E711: List value has not enough items"
+msgstr "E711: Liste değeri yeterli ögeye sahip değil"
+
+msgid "E996: Cannot lock a list or dict"
+msgstr "E996: Bir liste veya sözlük kilitlenemiyor"
+
+msgid "E690: Missing \"in\" after :for"
+msgstr "E690: :for sonrası \"in\" eksik"
+
+msgid "E109: Missing ':' after '?'"
+msgstr "E109: '?' sonrası ':' eksik"
+
+msgid "E804: Cannot use '%' with Float"
+msgstr "E804: Bir kayan ile '%' kullanılamaz"
+
+msgid "E973: Blob literal should have an even number of hex characters"
+msgstr ""
+"E973: İkili geniş nesne hazır bilgisi çift onalt. karakterlere iye olmalıdır"
+
+msgid "E110: Missing ')'"
+msgstr "E110: ')' eksik"
+
+msgid "E260: Missing name after ->"
+msgstr "E260: -> sonrası ad eksik"
+
+msgid "E695: Cannot index a Funcref"
+msgstr "E695: Bir Funcref dizinlenemez"
+
+msgid "E909: Cannot index a special variable"
+msgstr "E909: Özel bir değişken dizinlenemez"
+
+#, c-format
+msgid "E112: Option name missing: %s"
+msgstr "E112: Seçenek adı eksik: %s"
+
+#, c-format
+msgid "E113: Unknown option: %s"
+msgstr "E113: Bilinmeyen seçenek: %s"
+
+#, c-format
+msgid "E114: Missing quote: %s"
+msgstr "E114: Eksik alıntı: %s"
+
+#, c-format
+msgid "E115: Missing quote: %s"
+msgstr "E115: Eksik alıntı: %s"
+
+msgid "Not enough memory to set references, garbage collection aborted!"
+msgstr "Referansları ayarlamak için yetersiz bellek, atık toplama durduruldu"
+
+msgid "E724: variable nested too deep for displaying"
+msgstr "E724: Değişken çok iç içe geçtiğinden görüntülenemiyor"
+
+msgid "E805: Using a Float as a Number"
+msgstr "E805: Bir kayanı sayı olarak kullanma"
+
+msgid "E703: Using a Funcref as a Number"
+msgstr "E703: Bir Funcref'i sayı olarak kullanma"
+
+msgid "E745: Using a List as a Number"
+msgstr "E745: Bir listeyi sayı olarak kullanma"
+
+msgid "E728: Using a Dictionary as a Number"
+msgstr "E728: Bir sözlüğü sayı olarak kullanma"
+
+msgid "E910: Using a Job as a Number"
+msgstr "E910: Bir işi sayı olarak kullanma"
+
+msgid "E913: Using a Channel as a Number"
+msgstr "E913: Bir kanalı sayı olarak kullanma"
+
+msgid "E974: Using a Blob as a Number"
+msgstr "E974: Bir ikili geniş nesneyi sayı olarak kullanma"
+
+msgid "E891: Using a Funcref as a Float"
+msgstr "E891: Bir Funcref'i kayan olarak kullanma"
+
+msgid "E892: Using a String as a Float"
+msgstr "E892: Bir diziyi kayan olarak kullanma"
+
+msgid "E893: Using a List as a Float"
+msgstr "E893: Bir listeyi kayan olarak kullanma"
+
+msgid "E894: Using a Dictionary as a Float"
+msgstr "E894: Bir sözlüğü kayan olarak kullanma"
+
+msgid "E907: Using a special value as a Float"
+msgstr "E907: Özel bir değeri kayan olarak kullanma"
+
+msgid "E911: Using a Job as a Float"
+msgstr "E911: Bir işi kayan olarak kullanma"
+
+msgid "E914: Using a Channel as a Float"
+msgstr "E914: Bir kanalı kayan olarak kullanma"
+
+msgid "E975: Using a Blob as a Float"
+msgstr "E975: Bir ikili geniş nesneyi kayan olarak kullanma"
+
+msgid "E729: using Funcref as a String"
+msgstr "E729: Funcref dizi olarak kullanılıyor"
+
+msgid "E730: using List as a String"
+msgstr "E730: Liste dizi olarak kullanılıyor"
+
+msgid "E731: using Dictionary as a String"
+msgstr "E731: Sözlük dizi olarak kullanılıyor"
+
+msgid "E976: using Blob as a String"
+msgstr "E976: İkili geniş nesne dizi olarak kullanılıyor"
+
+msgid "E908: using an invalid value as a String"
+msgstr "E908: Bir geçersiz değer dizi olarak kullanılıyor"
+
+msgid "E698: variable nested too deep for making a copy"
+msgstr "E698: Değişken kopyalama için çok iç içe geçmiş"
+
+msgid ""
+"\n"
+"\tLast set from "
+msgstr ""
+"\n"
+"\tEn son şuradan ayarlandı: "
+
+msgid " line "
+msgstr " satır "
+
+msgid "E691: Can only compare List with List"
+msgstr "E691: Bir liste yalnızca başka bir liste ile karşılaştırılabilir"
+
+msgid "E692: Invalid operation for List"
+msgstr "E692: Geçersiz liste işlemi"
+
+msgid "E735: Can only compare Dictionary with Dictionary"
+msgstr "E735: Bir sözlük yalnızca başka bir sözlük ile karşılaştırılabilir"
+
+msgid "E736: Invalid operation for Dictionary"
+msgstr "E736: Geçersiz sözlük işlemi"
+
+msgid "E694: Invalid operation for Funcrefs"
+msgstr "E694: Geçersiz Funcref işlemi"
+
+msgid "E808: Number or Float required"
+msgstr "E808: Sayı veya kayan zorunlu"
+
+#, c-format
+msgid "E158: Invalid buffer name: %s"
+msgstr "E158: Geçersiz arabellek adı: %s"
+
+msgid "&Ok"
+msgstr "&Tamam"
+
+msgid "E980: lowlevel input not supported"
+msgstr "E980: Alt düzey girdi desteklenmiyor"
+
+#, c-format
+msgid "E700: Unknown function: %s"
+msgstr "E700: Bilinmeyen işlev: %s"
+
+msgid "E922: expected a dict"
+msgstr "E922: Bir sözlük bekleniyordu"
+
+msgid "E923: Second argument of function() must be a list or a dict"
+msgstr "E923: function() ikinci değişkeni bir liste veya sözlük olmalıdır"
+
+msgid ""
+"&OK\n"
+"&Cancel"
+msgstr ""
+"&Tamam\n"
+"İ&ptal"
+
+msgid "called inputrestore() more often than inputsave()"
+msgstr "inputrestore(), inputsave()'den daha fazla çağrıldı"
+
+msgid "E786: Range not allowed"
+msgstr "E786: Aralığa izin verilmiyor"
+
+msgid "E701: Invalid type for len()"
+msgstr "E701: len() için geçersiz tür"
+
+msgid "E726: Stride is zero"
+msgstr "E726: Sıfır adım"
+
+msgid "E727: Start past end"
+msgstr "E727: Başlangıç bitişten sonra"
+
+msgid "E240: No connection to the X server"
+msgstr "E240: X sunucusuna bağlanılamadı"
+
+#, c-format
+msgid "E241: Unable to send to %s"
+msgstr "E241: Şuraya gönderilemedi: %s"
+
+msgid "E277: Unable to read a server reply"
+msgstr "E277: Bir sunucu yanıtı okunamadı"
+
+msgid "E941: already started a server"
+msgstr "E941: Sunucu halihazırda çalışıyor"
+
+msgid "E942: +clientserver feature not available"
+msgstr "E942: +clientserver özelliği mevcut değil"
+
+msgid "E258: Unable to send to client"
+msgstr "E258: İstemciye gönderilemiyor"
+
+#, c-format
+msgid "E962: Invalid action: '%s'"
+msgstr "E962: Geçersiz eylem: '%s'"
+
+msgid "(Invalid)"
+msgstr "(Geçersiz)"
+
+#, c-format
+msgid "E935: invalid submatch number: %d"
+msgstr "E935: Geçersiz alteşleşme numarası: %d"
+
+msgid "E18: Unexpected characters in :let"
+msgstr "E18: :let içinde beklenmeyen karakterler"
+
+msgid "E991: cannot use =<< here"
+msgstr "E991: Burada =<< kullanılamaz"
+
+msgid "E221: Marker cannot start with lower case letter"
+msgstr "E221: İmleyici küçük harfle başlayamaz"
+
+msgid "E172: Missing marker"
+msgstr "E172: İmleyici eksik"
+
+#, c-format
+msgid "E990: Missing end marker '%s'"
+msgstr "E990: Son imleyici '%s' eksik"
+
+msgid "E985: .= is not supported with script version 2"
+msgstr "E985: .= betiğin ikinci sürümünde desteklenmiyor"
+
+msgid "E687: Less targets than List items"
+msgstr "E687: Liste ögelerinden daha az hedef var"
+
+msgid "E688: More targets than List items"
+msgstr "E688: Liste ögelerinden daha fazla hedef var"
+
+msgid "Double ; in list of variables"
+msgstr "Değişkenler listesinde çifte ;"
+
+#, c-format
+msgid "E738: Can't list variables for %s"
+msgstr "E738: %s için değişkenler listelenemiyor"
+
+msgid "E996: Cannot lock an environment variable"
+msgstr "E996: Ortam değişkeni kilitlenemiyor"
+
+msgid "E996: Cannot lock an option"
+msgstr "E996: Seçenek kilitlenemiyor"
+
+msgid "E996: Cannot lock a register"
+msgstr "E996: Yazmaç kilitlenemiyor"
+
+#, c-format
+msgid "E108: No such variable: \"%s\""
+msgstr "E108: Böyle bir değişken yok: \"%s\""
+
+#, c-format
+msgid "E940: Cannot lock or unlock variable %s"
+msgstr "E940: Değişken %s kilitlenemiyor veya açılamıyor"
+
+msgid "E743: variable nested too deep for (un)lock"
+msgstr "E743: Değişken kilitlenemez/kilidi açılamaz, çok iç içe geçmiş"
+
+#, c-format
+msgid "E963: setting %s to value with wrong type"
+msgstr "E963: %s yanlış türe sahip değere ayarlanıyor"
+
+#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: Değişken %s silinemiyor"
+
+#, c-format
+msgid "E704: Funcref variable name must start with a capital: %s"
+msgstr "E704: Funcref değişkeni BÜYÜK harf ile başlamalıdır: %s"
+
+#, c-format
+msgid "E705: Variable name conflicts with existing function: %s"
+msgstr "E705: Değişken adı mevcut işlevle çakışıyor: %s"
+
+#, c-format
+msgid "E741: Value is locked: %s"
+msgstr "E741: Değer kilitli: %s"
+
+msgid "Unknown"
+msgstr "Bilinmeyen"
+
+#, c-format
+msgid "E742: Cannot change value of %s"
+msgstr "E742: %s değeri değiştirilemiyor"
+
+msgid "E921: Invalid callback argument"
+msgstr "E921: Geçersiz geri çağırma değişkeni"
+
+#, c-format
+msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s"
+msgstr "<%s>%s%s %d, Onalt. %02x, Sek. %03o, Digr %s"
+
+#, c-format
+msgid "<%s>%s%s %d, Hex %02x, Octal %03o"
+msgstr "<%s>%s%s %d, Onaltılı %02x, Sekizli %03o"
+
+#, c-format
+msgid "> %d, Hex %04x, Oct %o, Digr %s"
+msgstr "> %d, Onalt. %04x, Sek. %o, Digr %s"
+
+#, c-format
+msgid "> %d, Hex %08x, Oct %o, Digr %s"
+msgstr "> %d, Onalt. %08x, Sek. %o, Digr %s"
+
+#, c-format
+msgid "> %d, Hex %04x, Octal %o"
+msgstr "> %d, Onaltılı %04x, Sekizli %o"
+
+#, c-format
+msgid "> %d, Hex %08x, Octal %o"
+msgstr "> %d, Onaltılı %08x, Sekizli %o"
+
+msgid "E134: Cannot move a range of lines into itself"
+msgstr "E134: Satırlardan oluşan erim kendi içine taşınamaz"
+
+#, c-format
+msgid "%ld line moved"
+msgid_plural "%ld lines moved"
+msgstr[0] "%ld satır taşındı"
+msgstr[1] "%ld satır taşındı"
+
+#, c-format
+msgid "%ld lines filtered"
+msgstr "%ld satır süzüldü"
+
+msgid "E135: *Filter* Autocommands must not change current buffer"
+msgstr "E135: *Süzgeç* otokomutları şu anki arabelleği değiştirmemelidir"
+
+msgid "[No write since last change]\n"
+msgstr "[Son değişiklikten beri yazma yok]\n"
+
+msgid "Save As"
+msgstr "Farklı Kaydet"
+
+msgid "Write partial file?"
+msgstr "Dosyanın bir kısmı yazılsın mı?"
+
+msgid "E140: Use ! to write partial buffer"
+msgstr "E140: Arabelleğin bir kısmını yazmak için ! kullanın"
+
+#, c-format
+msgid "Overwrite existing file \"%s\"?"
+msgstr "Mevcut \"%s\" dosyasının üzerine yazılsın mı?"
+
+#, c-format
+msgid "Swap file \"%s\" exists, overwrite anyway?"
+msgstr "Takas dosyası \"%s\" mevcut, yine de üzerine yazılsın mı?"
+
+#, c-format
+msgid "E768: Swap file exists: %s (:silent! overrides)"
+msgstr "E768: Takas dosyası mevcut: %s (:silent! yoksayar)"
+
+#, c-format
+msgid "E141: No file name for buffer %ld"
+msgstr "E141: %ld arabelleği için bir dosya adı yok"
+
+msgid "E142: File not written: Writing is disabled by 'write' option"
+msgstr "E142: Dosya yazılamadı: Yazma 'write' seçeneği ile kapatılmış"
+
+#, c-format
+msgid ""
+"'readonly' option is set for \"%s\".\n"
+"Do you wish to write anyway?"
+msgstr ""
+"\"%s\" için 'readonly' seçeneği ayarlanmış.\n"
+"Yine de yazmak istiyor musunuz?"
+
+#, c-format
+msgid ""
+"File permissions of \"%s\" are read-only.\n"
+"It may still be possible to write it.\n"
+"Do you wish to try?"
+msgstr ""
+"\"%s\" dosya izinleri saltokunur.\n"
+"Yine de belki yazılabilir.\n"
+"Denemek ister misiniz?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: \"%s\" saltokunur (yoksaymak için ! ekleyin)"
+
+msgid "Edit File"
+msgstr "Dosya Düzenle"
+
+#, c-format
+msgid "E143: Autocommands unexpectedly deleted new buffer %s"
+msgstr ""
+"E143: yeni %s arabelleğini otokomutlar beklenmedik bir biçimde sildi"
+
+msgid "E144: non-numeric argument to :z"
+msgstr "E144: :z için sayısal olmayan değişken"
+
+msgid "E145: Shell commands and some functionality not allowed in rvim"
+msgstr "E145: rvim içinde kabuk komutları ve bazı işlevselliklere izin verilmez"
+
+msgid "E146: Regular expressions can't be delimited by letters"
+msgstr "E146: Düzenli ifadeler harflerle sınırlandırılamaz"
+
+#, c-format
+msgid "replace with %s (y/n/a/q/l/^E/^Y)?"
+msgstr "%s ile değiştir (y/n/a/q/l/^E/^Y)?"
+
+msgid "(Interrupted) "
+msgstr "(Kesildi) "
+
+#, c-format
+msgid "%ld match on %ld line"
+msgid_plural "%ld matches on %ld line"
+msgstr[0] "%ld eşleşme/%ld satırda"
+msgstr[1] "%ld eşleşme/%ld satırda"
+
+#, c-format
+msgid "%ld substitution on %ld line"
+msgid_plural "%ld substitutions on %ld line"
+msgstr[0] "%ld değiştirme/%ld satırda"
+msgstr[1] "%ld değiştirme/%ld satırda"
+
+#, c-format
+msgid "%ld match on %ld lines"
+msgid_plural "%ld matches on %ld lines"
+msgstr[0] "%ld eşleşme/%ld satırda"
+msgstr[1] "%ld eşleşme/%ld satırda"
+
+#, c-format
+msgid "%ld substitution on %ld lines"
+msgid_plural "%ld substitutions on %ld lines"
+msgstr[0] "%ld değiştirme/%ld satırda"
+msgstr[1] "%ld değiştirme/%ld satırda"
+
+msgid "E147: Cannot do :global recursive with a range"
+msgstr "E147: :global özyinelemesi bir erim ile yapılamaz"
+
+msgid "E148: Regular expression missing from global"
+msgstr "E148: Düzenli ifadeler genelden kayıp"
+
+#, c-format
+msgid "Pattern found in every line: %s"
+msgstr "Dizgi her satırda bulundu: %s"
+
+#, c-format
+msgid "Pattern not found: %s"
+msgstr "Dizgi bulunamadı: %s"
+
+msgid "E478: Don't panic!"
+msgstr "E478: Panik yok!"
+
+#, c-format
+msgid "E661: Sorry, no '%s' help for %s"
+msgstr "E661: Üzgünüm, '%s' yardımı %s için mevcut değil"
+
+#, c-format
+msgid "E149: Sorry, no help for %s"
+msgstr "E149: Üzgünüm, %s için yardım mevcut değil"
+
+#, c-format
+msgid "Sorry, help file \"%s\" not found"
+msgstr "Üzgünüm, \"%s\" yardım dosyası bulunamadı"
+
+#, c-format
+msgid "E151: No match: %s"
+msgstr "E151: %s için eşleşme bulunamadı"
+
+#, c-format
+msgid "E152: Cannot open %s for writing"
+msgstr "E152: %s yazma için açılamıyor"
+
+#, c-format
+msgid "E153: Unable to open %s for reading"
+msgstr "E153: %s okuma için açılamıyor"
+
+#, c-format
+msgid "E670: Mix of help file encodings within a language: %s"
+msgstr "E670: Bir dil için yardım dosyası kodlama karmaşası: %s"
+
+#, c-format
+msgid "E154: Duplicate tag \"%s\" in file %s/%s"
+msgstr "E154: Şu dosyada yinelenen \"%s\" etiketi: %s/%s"
+
+#, c-format
+msgid "E150: Not a directory: %s"
+msgstr "E150: %s bir dizin değil"
+
+msgid "No old files"
+msgstr "Eski dosya yok"
+
+#, c-format
+msgid "Save changes to \"%s\"?"
+msgstr "Değişiklikler şuraya kaydedilsin mi: \"%s\"?"
+
+#, c-format
+msgid "E947: Job still running in buffer \"%s\""
+msgstr "E947: İş \"%s\" arabelleğinde hâlâ sürüyor"
+
+#, c-format
+msgid "E162: No write since last change for buffer \"%s\""
+msgstr "E162: \"%s\" arabelleğinde son değişiklikten beri yazma yok"
+
+msgid "Warning: Entered other buffer unexpectedly (check autocommands)"
+msgstr "Uyarı: Diğer arabelleğe aniden girildi (otokomutları denetleyin)"
+
+#, c-format
+msgid "E666: compiler not supported: %s"
+msgstr "E666: Derleyici desteklenmiyor: %s"
+
+#, c-format
+msgid "W20: Required python version 2.x not supported, ignoring file: %s"
+msgstr "W20: Gerekli 2.x Python sürümü desteklenmiyor, dosya yoksayılıyor: %s"
+
+#, c-format
+msgid "W21: Required python version 3.x not supported, ignoring file: %s"
+msgstr "W21: Gerekli Python sürümü 3.x desteklenmiyor, dosya yoksayılıyor: %s"
+
+#, c-format
+msgid "Current %slanguage: \"%s\""
+msgstr "Şu anki %sdil: \"%s\""
+
+#, c-format
+msgid "E197: Cannot set language to \"%s\""
+msgstr "E197: \"%s\" diline ayarlanamıyor"
+
+msgid "Entering Ex mode. Type \"visual\" to go to Normal mode."
+msgstr "Ex kipine giriliyor. Normal kipe geri dönmek için \"visual\" yazın."
+
+msgid "E501: At end-of-file"
+msgstr "E501: Dosyanın sonunda"
+
+msgid "E169: Command too recursive"
+msgstr "E169: Komut çok özyinelemeli"
+
+#, c-format
+msgid "E605: Exception not caught: %s"
+msgstr "E605: Kural dışı durum yakalanmadı: %s"
+
+msgid "End of sourced file"
+msgstr "Kaynak alınan dosyanın sonu"
+
+msgid "End of function"
+msgstr "İşlevin sonu"
+
+msgid "E464: Ambiguous use of user-defined command"
+msgstr "E464: Kullanıcı tanımlı komutun belirsiz kullanımı"
+
+msgid "E492: Not an editor command"
+msgstr "E492: Bir düzenleyici komutu değil"
+
+msgid "E981: Command not allowed in rvim"
+msgstr "E981: Bu komuta rvim'de izin verilmiyor"
+
+msgid "E493: Backwards range given"
+msgstr "E493: Geriye dönük erim verildi"
+
+msgid "Backwards range given, OK to swap"
+msgstr "Geriye dönük erim verildi, takas edilebilir"
+
+msgid "E494: Use w or w>>"
+msgstr "E494: w veya w>> kullanın"
+
+msgid ""
+"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
+msgstr ""
+"DAHİLİ: EX_DFLALL; ADDR_NONE, ADDR_UNSIGNED veya ADDR_QUICKFIX ile birlikte "
+"kullanılamıyor"
+
+msgid "E319: Sorry, the command is not available in this version"
+msgstr "E319: Üzgünüm, komut bu sürümde mevcut değil"
+
+#, c-format
+msgid "%d more file to edit. Quit anyway?"
+msgid_plural "%d more files to edit. Quit anyway?"
+msgstr[0] "Düzenlenecek %d dosya daha var. Yine de çıkılsın mı?"
+msgstr[1] "Düzenlenecek %d dosya daha var. Yine de çıkılsın mı?"
+
+#, c-format
+msgid "E173: %d more file to edit"
+msgid_plural "E173: %d more files to edit"
+msgstr[0] "E173: Düzenlenecek %d dosya daha var"
+msgstr[1] "E173: Düzenlenecek %d dosya daha var"
+
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#, c-format
+msgid "E185: Cannot find color scheme '%s'"
+msgstr "E185: '%s' renk düzeni bulunamadı"
+
+msgid "Greetings, Vim user!"
+msgstr "Selamlar Vim kullanıcısı!"
+
+msgid "E784: Cannot close last tab page"
+msgstr "E784: Son sekme sayfası kapatılamıyor"
+
+msgid "Already only one tab page"
+msgstr "Zaten bir sekme sayfası var"
+
+msgid "Edit File in new tab page"
+msgstr "Dosyayı yeni sekme sayfasında düzenle"
+
+msgid "Edit File in new window"
+msgstr "Dosyayı yeni pencerede düzenle"
+
+#, c-format
+msgid "Tab page %d"
+msgstr "Sekme sayfası %d"
+
+msgid "No swap file"
+msgstr "Takas dosyası yok"
+
+msgid "Append File"
+msgstr "Dosya iliştir"
+
+msgid "E186: No previous directory"
+msgstr "E186: Öncesinde dizin yok"
+
+msgid "E187: Unknown"
+msgstr "E187: Bilinmeyen"
+
+msgid "E465: :winsize requires two number arguments"
+msgstr "E465: :winsize iki adet sayı değişken gerektirir"
+
+#, c-format
+msgid "Window position: X %d, Y %d"
+msgstr "Pencere konumu: X %d, Y %d"
+
+msgid "E188: Obtaining window position not implemented for this platform"
+msgstr "E188: Pencere konumunu alma özelliği bu sistemde mevcut değil"
+
+msgid "E466: :winpos requires two number arguments"
+msgstr "E466: :winpos iki adet sayı değişken gerektirir"
+
+msgid "E930: Cannot use :redir inside execute()"
+msgstr "E930: :redir, execute() içinde kullanılamaz"
+
+msgid "Save Redirection"
+msgstr "Yeniden yönlendirmeyi kaydet"
+
+#, c-format
+msgid "E739: Cannot create directory: %s"
+msgstr "E739: Dizin oluşturulamıyor: %s"
+
+#, c-format
+msgid "E189: \"%s\" exists (add ! to override)"
+msgstr "E189: \"%s\" zaten var (yoksaymak için ! ekleyin)"
+
+#, c-format
+msgid "E190: Cannot open \"%s\" for writing"
+msgstr "E190: \"%s\" yazma için açılamıyor"
+
+msgid "E191: Argument must be a letter or forward/backward quote"
+msgstr "E191: Değişken bir harf veya açma/kapama tırnağı olmalıdır"
+
+msgid "E192: Recursive use of :normal too deep"
+msgstr "E192: :normal'in özyinelemeli kullanımı çok derinde"
+
+msgid "E809: #< is not available without the +eval feature"
+msgstr "E809: #<, +eval özelliği olmadan kullanılamaz"
+
+msgid "E194: No alternate file name to substitute for '#'"
+msgstr "E194: '#' yerine koymak için başka dosya adı yok"
+
+msgid "E495: no autocommand file name to substitute for \"<afile>\""
+msgstr "E495: \"<afile>\" yerine koymak için otokomut dosya adı yok"
+
+msgid "E496: no autocommand buffer number to substitute for \"<abuf>\""
+msgstr "E496: \"<abuf>\" yerine koymak için otokomut arabellek numarası yok"
+
+msgid "E497: no autocommand match name to substitute for \"<amatch>\""
+msgstr "E497: \"<amatch>\" yerine koymak için otokomut eşleşme adı yok"
+
+msgid "E498: no :source file name to substitute for \"<sfile>\""
+msgstr "E498: \"<sfile>\" yerine koymak için :source dosya adı yok"
+
+msgid "E842: no line number to use for \"<slnum>\""
+msgstr "E842: \"<slnum>\" kullanımı için satır numarası yok"
+
+msgid "E961: no line number to use for \"<sflnum>\""
+msgstr "E961: \"<sflnum>\" kullanımı için satır numarası yok"
+
+#, no-c-format
+msgid "E499: Empty file name for '%' or '#', only works with \":p:h\""
+msgstr "E499: '%' veya '#' için boş dosya adı, yalnızca \":p:h\" ile çalışır"
+
+msgid "E500: Evaluates to an empty string"
+msgstr "E500: Boş bir satır olarak değer biçer"
+
+msgid "Untitled"
+msgstr "Adsız"
+
+msgid "E196: No digraphs in this version"
+msgstr "E196: Bu sürümde ikili harfler bulunmamaktadır"
+
+msgid "E608: Cannot :throw exceptions with 'Vim' prefix"
+msgstr "E608: 'Vim' öneki ile kural dışı durumlar :throw edilemez"
+
+#, c-format
+msgid "Exception thrown: %s"
+msgstr "Kural dışı durum verdi: %s"
+
+#, c-format
+msgid "Exception finished: %s"
+msgstr "Kural dışı durum bitti: %s"
+
+#, c-format
+msgid "Exception discarded: %s"
+msgstr "Kural dışı durum kenara atıldı: %s"
+
+#, c-format
+msgid "%s, line %ld"
+msgstr "%s, %ld. satır"
+
+#, c-format
+msgid "Exception caught: %s"
+msgstr "Kural dışı durum yakalandı: %s"
+
+#, c-format
+msgid "%s made pending"
+msgstr "%s askıya alındı"
+
+#, c-format
+msgid "%s resumed"
+msgstr "%s sürdürüldü"
+
+#, c-format
+msgid "%s discarded"
+msgstr "%s kenara atıldı"
+
+msgid "Exception"
+msgstr "Kural dışı durum"
+
+msgid "Error and interrupt"
+msgstr "Hata ve yarıda kesilme"
+
+msgid "Error"
+msgstr "Hata"
+
+msgid "Interrupt"
+msgstr "Yarıda Kesilme"
+
+msgid "E579: :if nesting too deep"
+msgstr "E579: :if'ler çok iç içe geçmiş"
+
+msgid "E580: :endif without :if"
+msgstr "E580: :if olmadan :endif"
+
+msgid "E581: :else without :if"
+msgstr "E581: :if olmadan :else"
+
+msgid "E582: :elseif without :if"
+msgstr "E582: :if olmadan :elseif"
+
+msgid "E583: multiple :else"
+msgstr "E583: Birden fazla :else"
+
+msgid "E584: :elseif after :else"
+msgstr "E584: :else sonrası :elseif"
+
+msgid "E585: :while/:for nesting too deep"
+msgstr "E585: :while/:for çok iç içe geçmiş"
+
+msgid "E586: :continue without :while or :for"
+msgstr "E586: :while veya :for olmadan :continue"
+
+msgid "E587: :break without :while or :for"
+msgstr "E587: :while veya :for olmadan :break"
+
+msgid "E732: Using :endfor with :while"
+msgstr "E732: :endfor, :while ile kullanılıyor"
+
+msgid "E733: Using :endwhile with :for"
+msgstr "E733: :endwhile, :for ile kullanılıyor"
+
+msgid "E601: :try nesting too deep"
+msgstr "E601: :try çok iç içe geçmiş"
+
+msgid "E603: :catch without :try"
+msgstr "E603: :try olmadan :catch"
+
+msgid "E604: :catch after :finally"
+msgstr "E604: :finally sonrası :catch"
+
+msgid "E606: :finally without :try"
+msgstr "E606: :try olmadan :finally"
+
+msgid "E607: multiple :finally"
+msgstr "E607: Birden fazla :finally"
+
+msgid "E602: :endtry without :try"
+msgstr "E602: :try olmadan :endtry"
+
+msgid "E193: :endfunction not inside a function"
+msgstr "E193: :endfunction bir işlev içinde değil"
+
+msgid "E788: Not allowed to edit another buffer now"
+msgstr "E788: Şu anda başka bir arabellek düzenlenemez"
+
+msgid "E811: Not allowed to change buffer information now"
+msgstr "E811: Şu anda arabellek bilgisi değiştirilemez"
+
+msgid "E199: Active window or buffer deleted"
+msgstr "E199: Etkin pencere veya arabellek silinmiş"
+
+msgid "E812: Autocommands changed buffer or buffer name"
+msgstr "E812: Otokomutlar arabelleği veya arabellek adını değiştirdi"
+
+msgid "Illegal file name"
+msgstr "İzin verilmeyen dosya adı"
+
+msgid "is not a file"
+msgstr "bir dosya değil"
+
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "bir aygıt ('opendevice' seçeneği ile kapatılır)"
+
+msgid "[New DIRECTORY]"
+msgstr "[Yeni DİZİN]"
+
+msgid "[File too big]"
+msgstr "[Dosya çok büyük]"
+
+msgid "[Permission Denied]"
+msgstr "[İzin verilmedi]"
+
+msgid "E200: *ReadPre autocommands made the file unreadable"
+msgstr "E200: *ReadPre otokomutları dosyayı okunamaz hale getirdi"
+
+msgid "E201: *ReadPre autocommands must not change current buffer"
+msgstr "E201: *ReadPre otokomutları şu anki arabelleği değiştirmemeli"
+
+msgid "Vim: Reading from stdin...\n"
+msgstr "Vim: stdin'den okunuyor...\n"
+
+msgid "Reading from stdin..."
+msgstr "stdin'den okunuyor..."
+
+msgid "E202: Conversion made file unreadable!"
+msgstr "E202: Dönüştürme dosyayı okunamaz hale getirdi"
+
+msgid "[fifo]"
+msgstr "[fifo]"
+
+msgid "[socket]"
+msgstr "[uç nokta]"
+
+msgid "[character special]"
+msgstr "[özel karakterli]"
+
+msgid "[CR missing]"
+msgstr "[Eksik CR]"
+
+msgid "[long lines split]"
+msgstr "[uzun satırlar bölünmüş]"
+
+#, c-format
+msgid "[CONVERSION ERROR in line %ld]"
+msgstr "[%ld. satırda DÖNÜŞTÜRME HATASI]"
+
+#, c-format
+msgid "[ILLEGAL BYTE in line %ld]"
+msgstr "[%ld. satırda GEÇERSİZ BAYT]"
+
+msgid "[READ ERRORS]"
+msgstr "[OKUMA HATALARI]"
+
+msgid "Can't find temp file for conversion"
+msgstr "Dönüştürme için geçici dosya bulunamadı"
+
+msgid "Conversion with 'charconvert' failed"
+msgstr "'charconvert' ile dönüştürme başarısız"
+
+msgid "can't read output of 'charconvert'"
+msgstr "'charconvert' çıktısı okunamıyor"
+
+msgid "[dos]"
+msgstr "[dos]"
+
+msgid "[dos format]"
+msgstr "[dos biçimi]"
+
+msgid "[mac]"
+msgstr "[mac]"
+
+msgid "[mac format]"
+msgstr "[mac biçimi]"
+
+msgid "[unix]"
+msgstr "[unix]"
+
+msgid "[unix format]"
+msgstr "[unix biçimi]"
+
+#, c-format
+msgid "%ld line, "
+msgid_plural "%ld lines, "
+msgstr[0] "%ld satır, "
+msgstr[1] "%ld satır, "
+
+#, c-format
+msgid "%lld character"
+msgid_plural "%lld characters"
+msgstr[0] "%lld karakter"
+msgstr[1] "%lld karakter"
+
+msgid "[noeol]"
+msgstr "[noeol]"
+
+msgid "[Incomplete last line]"
+msgstr "[Tamamlanmamış son satır]"
+
+#, c-format
+msgid "E208: Error writing to \"%s\""
+msgstr "E208: Şuraya yazılamadı: \"%s\""
+
+#, c-format
+msgid "E209: Error closing \"%s\""
+msgstr "E209: \"%s\" kapatılırken hata"
+
+#, c-format
+msgid "E210: Error reading \"%s\""
+msgstr "E210: \"%s\" okunurken hata"
+
+msgid "E246: FileChangedShell autocommand deleted buffer"
+msgstr "E246: FileChangedShell otokomutu arabelleği sildi"
+
+#, c-format
+msgid "E211: File \"%s\" no longer available"
+msgstr "E211: \"%s\" dosyası artık mevcut değil"
+
+#, c-format
+msgid ""
+"W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as "
+"well"
+msgstr ""
+"W12: Uyarı: \"%s\" dosyası Vim'deki arabellek de dahil olmak üzere"
+"değiştirildi"
+
+msgid "See \":help W12\" for more info."
+msgstr "Ek bilgi için \":help W12\" yazın."
+
+#, c-format
+msgid "W11: Warning: File \"%s\" has changed since editing started"
+msgstr "W11: Uyarı: \"%s\" dosyası düzenleme başladığından beri değişti"
+
+msgid "See \":help W11\" for more info."
+msgstr "Ek bilgi için \":help W11\" yazın."
+
+#, c-format
+msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
+msgstr "W16: Uyarı: \"%s\" dosyasının kipi düzenleme başladığından beri değişti"
+
+msgid "See \":help W16\" for more info."
+msgstr "Ek bilgi için \":help W16\" yazın."
+
+#, c-format
+msgid "W13: Warning: File \"%s\" has been created after editing started"
+msgstr "W13: Uyarı: \"%s\" dosyası düzenleme başladıktan sonra oluşturuldu"
+
+msgid "Warning"
+msgstr "Uyarı"
+
+msgid ""
+"&OK\n"
+"&Load File"
+msgstr ""
+"&Tamam\n"
+"&Dosya Yükle"
+
+#, c-format
+msgid "E462: Could not prepare for reloading \"%s\""
+msgstr "E462: \"%s\" yeniden yükleme için hazırlanamadı"
+
+#, c-format
+msgid "E321: Could not reload \"%s\""
+msgstr "E321: \"%s\" yeniden yüklenemedi"
+
+msgid "E219: Missing {."
+msgstr "E219: Eksik {."
+
+msgid "E220: Missing }."
+msgstr "E220: Eksik }."
+
+msgid "<empty>"
+msgstr "<boş>"
+
+msgid "E655: Too many symbolic links (cycle?)"
+msgstr "E655: Çok fazla sembolik bağlantı (dönüş?)"
+
+msgid "Select Directory dialog"
+msgstr "Dizin Seç iletişim kutusu"
+
+msgid "Save File dialog"
+msgstr "Dosya Kaydet iletişim kutusu"
+
+msgid "Open File dialog"
+msgstr "Dosya Aç iletişim kutusu"
+
+msgid "E338: Sorry, no file browser in console mode"
+msgstr "E338: Üzgünüm, konsol kipinde dosya tarayıcı yoktur"
+
+msgid "E854: path too long for completion"
+msgstr "E854: Yol tamamlama için çok uzun"
+
+#, c-format
+msgid ""
+"E343: Invalid path: '**[number]' must be at the end of the path or be "
+"followed by '%s'."
+msgstr ""
+"E343: Geçersiz yol: '**[number]' yolun sonunda olmalı veya arkasından '%s'"
+"eklenmelidir"
+
+#, c-format
+msgid "E344: Can't find directory \"%s\" in cdpath"
+msgstr "E344: \"%s\" dizini cdpath içinde bulunamadı"
+
+#, c-format
+msgid "E345: Can't find file \"%s\" in path"
+msgstr "E345: \"%s\" dosyası yol içinde bulunamadı"
+
+#, c-format
+msgid "E346: No more directory \"%s\" found in cdpath"
+msgstr "E346: Başka bir \"%s\" dizini cdpath içinde bulunamadı"
+
+#, c-format
+msgid "E347: No more file \"%s\" found in path"
+msgstr "E347: Başka bir \"%s\" dosyası yol içinde bulunamadı"
+
+msgid "E446: No file name under cursor"
+msgstr "E446: İmleç altında bir dosya adı yok"
+
+#, c-format
+msgid "E447: Can't find file \"%s\" in path"
+msgstr "E447: \"%s\" dosyası yol içinde bulunamadı"
+
+msgid "E490: No fold found"
+msgstr "E490: Kıvırma bulunamadı"
+
+msgid "E350: Cannot create fold with current 'foldmethod'"
+msgstr "E350: Şu anki 'foldmethod' ile kıvırma oluşturulamıyor"
+
+msgid "E351: Cannot delete fold with current 'foldmethod'"
+msgstr "E351: Şu anki 'foldmethod' ile kıvırma silinemiyor"
+
+#, c-format
+msgid "+--%3ld line folded "
+msgid_plural "+--%3ld lines folded "
+msgstr[0] "+--%3ld satır kıvrıldı "
+msgstr[1] "+--%3ld satır kıvrıldı "
+
+#, c-format
+msgid "+-%s%3ld line: "
+msgid_plural "+-%s%3ld lines: "
+msgstr[0] "+-%s%3ld satır: "
+msgstr[1] "+-%s%3ld satır: "
+
+msgid "E222: Add to read buffer"
+msgstr "E222: Okuma arabelleğine ekle"
+
+msgid "E223: recursive mapping"
+msgstr "E223: Özyinelemeli eşlemleme"
+
+msgid "E851: Failed to create a new process for the GUI"
+msgstr "E851: Grafik arabirim için yeni bir işlem yaratılamadı"
+
+msgid "E852: The child process failed to start the GUI"
+msgstr "E852: Alt işlem grafik arabirimini başlatamadı"
+
+msgid "E229: Cannot start the GUI"
+msgstr "E229: Grafik arabirimi başlatılamıyor"
+
+#, c-format
+msgid "E230: Cannot read from \"%s\""
+msgstr "E230: \"%s\" okunamıyor"
+
+msgid "E665: Cannot start GUI, no valid font found"
+msgstr "E665: Grafik arabirim başlatılamıyor, geçerli bir font bulunamadı"
+
+msgid "E231: 'guifontwide' invalid"
+msgstr "E231: 'guifontwide' geçersiz"
+
+msgid "E599: Value of 'imactivatekey' is invalid"
+msgstr "E599: 'imactivatekey' değeri geçersiz"
+
+#, c-format
+msgid "E254: Cannot allocate color %s"
+msgstr "E254: %s rengi ayrılamıyor"
+
+msgid "No match at cursor, finding next"
+msgstr "İmleç konumunda eşleşme bulunamadı, sonraki bulunuyor"
+
+msgid "<cannot open> "
+msgstr "<açılamıyor> "
+
+#, c-format
+msgid "E616: vim_SelFile: can't get font %s"
+msgstr "E616: vim_SelFile: %s fontu bulunamıyor"
+
+msgid "E614: vim_SelFile: can't return to current directory"
+msgstr "E614: vim_SelFile: Şu anki dizine dönülemiyor"
+
+msgid "Pathname:"
+msgstr "Yol adı:"
+
+msgid "E615: vim_SelFile: can't get current directory"
+msgstr "E615: vim_SelFile: Şu anki dizin bulunamıyor"
+
+msgid "OK"
+msgstr "Tamam"
+
+msgid "Cancel"
+msgstr "İptal"
+
+msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
+msgstr "Kaydırma Parçacığı: Kenar piksel haritası geometrisi bulunamadı"
+
+msgid "Vim dialog"
+msgstr "Vim iletişim kutusu"
+
+msgid "E232: Cannot create BalloonEval with both message and callback"
+msgstr "E232: Hem ileti hem de geri çağırma ile BallonEval oluşturulamıyor"
+
+msgid "_Cancel"
+msgstr "İ_ptal"
+
+msgid "_Save"
+msgstr "_Kaydet"
+
+msgid "_Open"
+msgstr "_Aç"
+
+msgid "_OK"
+msgstr "_Tamam"
+
+msgid ""
+"&Yes\n"
+"&No\n"
+"&Cancel"
+msgstr ""
+"&Evet\n"
+"&Hayır\n"
+"İ&ptal"
+
+msgid "Yes"
+msgstr "Evet"
+
+msgid "No"
+msgstr "Hayır"
+
+msgid "Input _Methods"
+msgstr "Giriş _Yöntemleri"
+
+msgid "VIM - Search and Replace..."
+msgstr "VİM - Ara ve Değiştir..."
+
+msgid "VIM - Search..."
+msgstr "VİM - Ara..."
+
+msgid "Find what:"
+msgstr "Bulunacak nesne:"
+
+msgid "Replace with:"
+msgstr "Şununla değiştir:"
+
+msgid "Match whole word only"
+msgstr "Tam sözcükleri ara"
+
+msgid "Match case"
+msgstr "BÜYÜK/küçük harf duyarlı"
+
+msgid "Direction"
+msgstr "Yön"
+
+msgid "Up"
+msgstr "Yukarı"
+
+msgid "Down"
+msgstr "Aşağı"
+
+msgid "Find Next"
+msgstr "Sonrakini Bul"
+
+msgid "Replace"
+msgstr "Değiştir"
+
+msgid "Replace All"
+msgstr "Tümünü Değiştir"
+
+msgid "_Close"
+msgstr "K_apat"
+
+msgid "Vim: Received \"die\" request from session manager\n"
+msgstr "Vim: Oturum yöneticisinden işi sonlandırma isteği geldi\n"
+
+msgid "Close tab"
+msgstr "Sekmeyi kapat"
+
+msgid "New tab"
+msgstr "Yeni sekme"
+
+msgid "Open Tab..."
+msgstr "Sekme Aç..."
+
+msgid "Vim: Main window unexpectedly destroyed\n"
+msgstr "Vim: Ana pencere beklenmedik bir biçimde gitti\n"
+
+msgid "&Filter"
+msgstr "&Süz"
+
+msgid "&Cancel"
+msgstr "İ&ptal"
+
+msgid "Directories"
+msgstr "Dizinler"
+
+msgid "Filter"
+msgstr "Süzgeç"
+
+msgid "&Help"
+msgstr "&Yardım"
+
+msgid "Files"
+msgstr "Dosyalar"
+
+msgid "&OK"
+msgstr "&Tamam"
+
+msgid "Selection"
+msgstr "Seçim"
+
+msgid "Find &Next"
+msgstr "Sonrakini &Bul"
+
+msgid "&Replace"
+msgstr "&Değiştir"
+
+msgid "Replace &All"
+msgstr "Tümünü D&eğiştir"
+
+msgid "&Undo"
+msgstr "&Geri al"
+
+msgid "Open tab..."
+msgstr "Sekme aç..."
+
+msgid "Find string"
+msgstr "Dizi bul"
+
+msgid "Find & Replace"
+msgstr "Bul ve Değiştir"
+
+msgid "Not Used"
+msgstr "Kullanılmıyor"
+
+msgid "Directory\t*.nothing\n"
+msgstr "Directory\t*.hiçbir şey\n"
+
+#, c-format
+msgid "E671: Cannot find window title \"%s\""
+msgstr "E671: Pencere başlığı \"%s\" bulunamıyor"
+
+#, c-format
+msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
+msgstr "E243: \"-%s\" değişkeni desteklenmiyor; OLE sürümünü kullanın."
+
+msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
+msgstr "E988: Grafik arabirim kullanılamıyor. gvim.exe çalıştırılamadı."
+
+msgid "E672: Unable to open window inside MDI application"
+msgstr "E672: MDI uygulaması içinde pencere açılamıyor"
+
+msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
+msgstr ""
+"Vim E458: Renk eşlemi girdisi ayrılamadı, bazı renkler hatalı görünebilir"
+
+#, c-format
+msgid "E250: Fonts for the following charsets are missing in fontset %s:"
+msgstr "E250: %s yazıtipi seti içinde şu karakter setleri için fontlar eksik:"
+
+#, c-format
+msgid "E252: Fontset name: %s"
+msgstr "E252: Yazıtipi seti adı: %s"
+
+#, c-format
+msgid "Font '%s' is not fixed-width"
+msgstr "'%s' yazıtipi sabit aralıklı değil"
+
+#, c-format
+msgid "E253: Fontset name: %s"
+msgstr "E253: Yazıtipi seti adı: %s"
+
+#, c-format
+msgid "Font0: %s"
+msgstr "Font0: %s"
+
+#, c-format
+msgid "Font%d: %s"
+msgstr "Yazıtipi%d: %s"
+
+#, c-format
+msgid "Font%d width is not twice that of font0"
+msgstr "Yazıtipi%d genişliği font0 genişliğinin iki katı olmalıdır"
+
+#, c-format
+msgid "Font0 width: %d"
+msgstr "Font0 genişliği: %d"
+
+#, c-format
+msgid "Font%d width: %d"
+msgstr "Yazıtipi%d genişliği: %d"
+
+msgid "Invalid font specification"
+msgstr "Geçersiz yazıtipi belirtimi"
+
+msgid "&Dismiss"
+msgstr "So&nlandır"
+
+msgid "no specific match"
+msgstr "belirli bir eşleşme yok"
+
+msgid "Vim - Font Selector"
+msgstr "Vim - Yazıtipi Seçicisi"
+
+msgid "Name:"
+msgstr "Ad:"
+
+msgid "Show size in Points"
+msgstr "Büyüklüğü puntolarla göster"
+
+msgid "Encoding:"
+msgstr "Kodlama:"
+
+msgid "Font:"
+msgstr "Yazıtipi:"
+
+msgid "Style:"
+msgstr "Biçem:"
+
+msgid "Size:"
+msgstr "Büyüklük:"
+
+msgid "E256: Hangul automata ERROR"
+msgstr "E256: Hangul otomasyon HATASI"
+
+msgid "E550: Missing colon"
+msgstr "E550: Eksik iki nokta"
+
+msgid "E551: Illegal component"
+msgstr "E551: Geçersiz bileşen"
+
+msgid "E552: digit expected"
+msgstr "E552: Basamak bekleniyordu"
+
+#, c-format
+msgid "Page %d"
+msgstr "Sayfa %d"
+
+msgid "No text to be printed"
+msgstr "Yazdırılacak metin yok"
+
+#, c-format
+msgid "Printing page %d (%d%%)"
+msgstr "Sayfa yazdırılıyor: %d (%d%%)"
+
+#, c-format
+msgid " Copy %d of %d"
+msgstr " Kopya %d/%d"
+
+#, c-format
+msgid "Printed: %s"
+msgstr "Yazdırıldı: %s"
+
+msgid "Printing aborted"
+msgstr "Yazdırma durduruldu"
+
+msgid "E455: Error writing to PostScript output file"
+msgstr "E455: PostScript çıktı dosyasına yazarken hata"
+
+#, c-format
+msgid "E624: Can't open file \"%s\""
+msgstr "E624: \"%s\" dosyası açılamıyor"
+
+#, c-format
+msgid "E457: Can't read PostScript resource file \"%s\""
+msgstr "E457: PostScript kaynak dosyası \"%s\" okunamıyor"
+
+#, c-format
+msgid "E618: file \"%s\" is not a PostScript resource file"
+msgstr "E618: \"%s\" dosyası bir PostScript kaynak dosyası değil"
+
+#, c-format
+msgid "E619: file \"%s\" is not a supported PostScript resource file"
+msgstr "E619: \"%s\" dosyası desteklenen bir PostScript kaynak dosyası değil"
+
+#, c-format
+msgid "E621: \"%s\" resource file has wrong version"
+msgstr "E621: \"%s\" kaynak dosyası sürümü hatalı"
+
+msgid "E673: Incompatible multi-byte encoding and character set."
+msgstr "E673: Uyumsuz çoklubit kodlaması ve karakter seti."
+
+msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
+msgstr "E674: printmbcharset çoklubit kodlamada boş olamaz"
+
+msgid "E675: No default font specified for multi-byte printing."
+msgstr "E675: Çoklubit yazdırma için öntanımlı yazıtipi ayarlanmamış."
+
+msgid "E324: Can't open PostScript output file"
+msgstr "E324: PostScript çıktı dosyası açılamıyor"
+
+#, c-format
+msgid "E456: Can't open file \"%s\""
+msgstr "E456: \"%s\" dosyası açılamıyor"
+
+msgid "E456: Can't find PostScript resource file \"prolog.ps\""
+msgstr "E456: PostScript kaynak dosyası \"prolog.ps\" bulunamıyor"
+
+msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
+msgstr "E456: PostScript kaynak dosyası \"cidfont.ps\" bulunamıyor"
+
+#, c-format
+msgid "E456: Can't find PostScript resource file \"%s.ps\""
+msgstr "E456: PostScript kaynak dosyası \"%s.ps\" bulunamıyor"
+
+#, c-format
+msgid "E620: Unable to convert to print encoding \"%s\""
+msgstr "E620: \"%s\" yazdırma kodlamasına dönüştürülemiyor"
+
+msgid "Sending to printer..."
+msgstr "Yazıcıya gönderiliyor..."
+
+msgid "E365: Failed to print PostScript file"
+msgstr "E365: PostScript dosyası yazdırılamadı"
+
+msgid "Print job sent."
+msgstr "Yazdırma işi gönderildi"
+
+msgid "E679: recursive loop loading syncolor.vim"
+msgstr "E679: syncolor.vim yüklenirken özyinelemeli döngü"
+
+#, c-format
+msgid "E411: highlight group not found: %s"
+msgstr "E411: Vurgulama grubu bulunamadı: %s"
+
+#, c-format
+msgid "E412: Not enough arguments: \":highlight link %s\""
+msgstr "E412: Yetersiz sayıda değişken: \":highlight link %s\""
+
+#, c-format
+msgid "E413: Too many arguments: \":highlight link %s\""
+msgstr "E413: Çok fazla değişken: \":highlight link %s\""
+
+msgid "E414: group has settings, highlight link ignored"
+msgstr "E414: Grup ayarları mevcut, vurgulama bağlantısı yoksayıldı"
+
+#, c-format
+msgid "E415: unexpected equal sign: %s"
+msgstr "E415: Beklenmedik eşittir imi: %s"
+
+#, c-format
+msgid "E416: missing equal sign: %s"
+msgstr "E416: Eksik eşittir imi: %s"
+
+#, c-format
+msgid "E417: missing argument: %s"
+msgstr "E417: Eksik değişkenler: %s"
+
+#, c-format
+msgid "E418: Illegal value: %s"
+msgstr "E418: İzin verilmeyen değer: %s"
+
+msgid "E419: FG color unknown"
+msgstr "E419: Bilinmeyen metin rengi"
+
+msgid "E420: BG color unknown"
+msgstr "E420: Bilinmeyen ardalan rengi"
+
+#, c-format
+msgid "E421: Color name or number not recognized: %s"
+msgstr "E421: Renk adı veya numarası tanımlanamadı: %s"
+
+#, c-format
+msgid "E422: terminal code too long: %s"
+msgstr "E422: Uçbirim kodu çok uzun: %s"
+
+#, c-format
+msgid "E423: Illegal argument: %s"
+msgstr "E423: Geçersiz değişken: %s"
+
+msgid "E424: Too many different highlighting attributes in use"
+msgstr "E424: Çok fazla değişik vurgulama kuralları kullanılıyor"
+
+msgid "E669: Unprintable character in group name"
+msgstr "E669: Grup adında yazdırılamayan karakter"
+
+msgid "W18: Invalid character in group name"
+msgstr "W18: Grup adında geçersiz karakter"
+
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Çok fazla vurgulama ve sözdizim grupları"
+
+#, c-format
+msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E799: Geçersiz ID: %d (1'e eşit veya 1'den büyük olmalıdır)"
+
+#, c-format
+msgid "E801: ID already taken: %d"
+msgstr "E801: Kullanımda olan ID: %d"
+
+msgid "List or number required"
+msgstr "Liste veya numara zorunlu"
+
+#, c-format
+msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E802: Geçersiz ID: %d (1'e eşit veya 1'den büyük olmalıdır)"
+
+#, c-format
+msgid "E803: ID not found: %d"
+msgstr "E803: ID bulunamadı: %d"
+
+#, c-format
+msgid "E798: ID is reserved for \":match\": %d"
+msgstr "E798: ID, \":match\" için ayrılmış: %d"
+
+msgid "Add a new database"
+msgstr "Yeni bir veritabanı ekle"
+
+msgid "Query for a pattern"
+msgstr "Bir dizgiyi sorgula"
+
+msgid "Show this message"
+msgstr "Bu iletiyi göster"
+
+msgid "Kill a connection"
+msgstr "Bir bağlantıyı kes"
+
+msgid "Reinit all connections"
+msgstr "Tüm bağlantıları yeniden kur"
+
+msgid "Show connections"
+msgstr "Bağlantıları göster"
+
+#, c-format
+msgid "E560: Usage: cs[cope] %s"
+msgstr "E560: Kullanım: cs[cope] %s"
+
+msgid "This cscope command does not support splitting the window.\n"
+msgstr "Bu cscope komutu pencereyi bölmeyi desteklemiyor.\n"
+
+msgid "E562: Usage: cstag <ident>"
+msgstr "E562: Kullanım: cstag <ad>"
+
+msgid "E257: cstag: tag not found"
+msgstr "E257: cstag: Etiket bulunamadı"
+
+#, c-format
+msgid "E563: stat(%s) error: %d"
+msgstr "E563: stat(%s) hatası: %d"
+
+msgid "E563: stat error"
+msgstr "E563: stat hatası"
+
+#, c-format
+msgid "E564: %s is not a directory or a valid cscope database"
+msgstr "E564: %s bir dizin veya geçerli bir cscope veritabanı değil"
+
+#, c-format
+msgid "Added cscope database %s"
+msgstr "cscope veritabanı %s eklendi"
+
+#, c-format
+msgid "E262: error reading cscope connection %d"
+msgstr "E262: cscope bağlantısı %d okunurken hata"
+
+msgid "E561: unknown cscope search type"
+msgstr "E561: Bilinmeyen cscope arama türü"
+
+msgid "E566: Could not create cscope pipes"
+msgstr "E566: cscope veri yolları oluşturulamadı"
+
+msgid "E622: Could not fork for cscope"
+msgstr "E622: cscope için çatal oluşturulamadı"
+
+msgid "cs_create_connection setpgid failed"
+msgstr "cs_create_connection: setpgid başarısız oldu"
+
+msgid "cs_create_connection exec failed"
+msgstr "cs_create_connection: exec başarısız oldu"
+
+msgid "cs_create_connection: fdopen for to_fp failed"
+msgstr "cs_create_connection: to_fp için fdopen başarısız oldu"
+
+msgid "cs_create_connection: fdopen for fr_fp failed"
+msgstr "cs_create_connection: fr_fp için fdopen başarısız oldu"
+
+msgid "E623: Could not spawn cscope process"
+msgstr "E623: cscope işlemi ortaya çıkarılamadı"
+
+msgid "E567: no cscope connections"
+msgstr "E567: cscope bağlantıları yok"
+
+#, c-format
+msgid "E469: invalid cscopequickfix flag %c for %c"
+msgstr "E469: Geçersiz cscopequickfix bayrağı %c, %c için"
+
+#, c-format
+msgid "E259: no matches found for cscope query %s of %s"
+msgstr "E259: cscope sorguse %s/%s için eşleşme bulunamadı"
+
+msgid "cscope commands:\n"
+msgstr "cscope komutları:\n"
+
+#, c-format
+msgid "%-5s: %s%*s (Usage: %s)"
+msgstr "%-5s: %s%*s (Kullanım: %s)"
+
+msgid ""
+"\n"
+" a: Find assignments to this symbol\n"
+" c: Find functions calling this function\n"
+" d: Find functions called by this function\n"
+" e: Find this egrep pattern\n"
+" f: Find this file\n"
+" g: Find this definition\n"
+" i: Find files #including this file\n"
+" s: Find this C symbol\n"
+" t: Find this text string\n"
+msgstr ""
+"\n"
+" a: Bu sembole yapılan atamaları bul\n"
+" c: Bu işlevi çağıran işlevleri bul\n"
+" d: bu işlev tarafından çağrılan işlevleri bul\n"
+" e: Bu egrep dizgisini bul\n"
+" f: Bu dosyayı bul\n"
+" g: Bu tanımı bul\n"
+" i: Bu dosyayı içeren (#including) dosyaları bul\n"
+" s: Bu \"C\" sembolünü bul\n"
+" t: Bu metin dizisini bul\n"
+
+#, c-format
+msgid "E625: cannot open cscope database: %s"
+msgstr "E625: cscope veritabanı açılamıyor: %s"
+
+msgid "E626: cannot get cscope database information"
+msgstr "E626: cscope veritabanı bilgisi alınamıyor"
+
+msgid "E568: duplicate cscope database not added"
+msgstr "E568: Yinelenen cscope veritabanı eklenmemiş"
+
+#, c-format
+msgid "E261: cscope connection %s not found"
+msgstr "E261: %s cscope bağlantısı bulunamadı"
+
+#, c-format
+msgid "cscope connection %s closed"
+msgstr "%s cscope bağlantısı bitirildi"
+
+msgid "E570: fatal error in cs_manage_matches"
+msgstr "E570: cs_manage_matches içinde onulmaz hata"
+
+#, c-format
+msgid "Cscope tag: %s"
+msgstr "cscope etiketi: %s"
+
+msgid ""
+"\n"
+" # line"
+msgstr ""
+"\n"
+" # satır"
+
+msgid "filename / context / line\n"
+msgstr "dosya adı / bağlam / satır\n"
+
+#, c-format
+msgid "E609: Cscope error: %s"
+msgstr "E609: cscope hatası: %s"
+
+msgid "All cscope databases reset"
+msgstr "Tüm cscope veritabanları sıfırlandı"
+
+msgid "no cscope connections\n"
+msgstr "cscope bağlantısı yok\n"
+
+msgid " # pid database name prepend path\n"
+msgstr " # pid veritabanı adı başlangıç yolu\n"
+
+msgid "Lua library cannot be loaded."
+msgstr "Lua kitaplığı yüklenemedi."
+
+msgid "cannot save undo information"
+msgstr "Geri al bilgisi kaydedilemiyor"
+
+msgid ""
+"E815: Sorry, this command is disabled, the MzScheme libraries could not be "
+"loaded."
+msgstr ""
+"E815: Üzgünüm, bu komut etkin değil, MzScheme kitaplıkları yüklenemedi."
+
+msgid ""
+"E895: Sorry, this command is disabled, the MzScheme's racket/base module "
+"could not be loaded."
+msgstr ""
+"E895: Üzgünüm, bu komut etkin değil, MzScheme'in racket/base birimi "
+"yüklenemedi."
+
+msgid "invalid expression"
+msgstr "geçersiz ifade"
+
+msgid "expressions disabled at compile time"
+msgstr "ifadeler derleme aşamasında kapatılmış"
+
+msgid "hidden option"
+msgstr "gizli seçenek"
+
+msgid "unknown option"
+msgstr "bilinmeyen seçenek"
+
+msgid "window index is out of range"
+msgstr "pencere dizini erimin dışında"
+
+msgid "couldn't open buffer"
+msgstr "arabellek açılamadı"
+
+msgid "cannot delete line"
+msgstr "satır silinemiyor"
+
+msgid "cannot replace line"
+msgstr "satır değiştirilemiyor"
+
+msgid "cannot insert line"
+msgstr "satır eklenemiyor"
+
+msgid "string cannot contain newlines"
+msgstr "dizi \"yeni satır\" imi içeremez"
+
+msgid "error converting Scheme values to Vim"
+msgstr "Scheme değerlerini Vim değerlerine dönüştürürken hata"
+
+msgid "Vim error: ~a"
+msgstr "Vim hatası: ~a"
+
+msgid "Vim error"
+msgstr "Vim hatası"
+
+msgid "buffer is invalid"
+msgstr "arabellek geçersiz"
+
+msgid "window is invalid"
+msgstr "pencere geçersiz"
+
+msgid "linenr out of range"
+msgstr "linenr erimin dışında"
+
+msgid "not allowed in the Vim sandbox"
+msgstr "Vim kum havuzunda izin verilmiyor"
+
+msgid "E836: This Vim cannot execute :python after using :py3"
+msgstr "E836: Bu Vim :py3 komutundan sonra :python komutunu çalıştıramaz"
+
+msgid ""
+"E263: Sorry, this command is disabled, the Python library could not be "
+"loaded."
+msgstr ""
+"E263: Üzgünüm, bu komut etkin değil, Python kitaplığı yüklenemedi"
+
+msgid ""
+"E887: Sorry, this command is disabled, the Python's site module could not be "
+"loaded."
+msgstr ""
+"E887: Üzgünüm, bu komut etkin değil, Python'un site birimi yüklenemedi."
+
+msgid "E659: Cannot invoke Python recursively"
+msgstr "E659: Python özyinelemeli olarak çalıştırılamıyor"
+
+msgid "E837: This Vim cannot execute :py3 after using :python"
+msgstr "E837: Bu Vim :python komutundan sonra :py3 komutunu çalıştıramaz"
+
+msgid "E265: $_ must be an instance of String"
+msgstr "E265: $_ bir dizi örneği olmalıdır"
+
+msgid ""
+"E266: Sorry, this command is disabled, the Ruby library could not be loaded."
+msgstr ""
+"E266: Üzgünüm, bu komut etkin değil, Ruby kitaplığı yüklenemedi."
+
+msgid "E267: unexpected return"
+msgstr "E267: Beklenmeyen dönüş"
+
+msgid "E268: unexpected next"
+msgstr "E268: Beklenmeyen sonraki"
+
+msgid "E269: unexpected break"
+msgstr "E269: Beklenmeyen kesme"
+
+msgid "E270: unexpected redo"
+msgstr "E270: Beklenmeyen yinele komutu"
+
+msgid "E271: retry outside of rescue clause"
+msgstr "E271: retry, rescue işlecinin dışında"
+
+msgid "E272: unhandled exception"
+msgstr "E272: İşletilemeyen kural dışı durum"
+
+#, c-format
+msgid "E273: unknown longjmp status %d"
+msgstr "E273: Bilinmeyen longjmp durumu %d"
+
+msgid "invalid buffer number"
+msgstr "Geçersiz arabellek numarası"
+
+msgid "not implemented yet"
+msgstr "henüz uygulanmadı"
+
+msgid "cannot set line(s)"
+msgstr "satır(lar) ayarlanamıyor"
+
+msgid "invalid mark name"
+msgstr "geçersiz im adı"
+
+msgid "mark not set"
+msgstr "im ayarlanmamış"
+
+#, c-format
+msgid "row %d column %d"
+msgstr "satır %d sütun %d"
+
+msgid "cannot insert/append line"
+msgstr "satır eklenemiyor/iliştirilemiyor"
+
+msgid "line number out of range"
+msgstr "satır numarası erimin dışında"
+
+msgid "unknown flag: "
+msgstr "geçersiz bayrak: "
+
+msgid "unknown vimOption"
+msgstr "geçersiz vimOption"
+
+msgid "keyboard interrupt"
+msgstr "klavye araya girdi"
+
+msgid "vim error"
+msgstr "vim hatası"
+
+msgid "cannot create buffer/window command: object is being deleted"
+msgstr "arabellek/pencere komutu oluşturulamadı: öge şu anda siliniyor"
+
+msgid ""
+"cannot register callback command: buffer/window is already being deleted"
+msgstr ""
+"geri çağırma komutu kaydedilemiyor: arabellek/pencere zaten siliniyor"
+
+msgid ""
+"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
+"org"
+msgstr ""
+"E280: ONULMAZ TCL HATASI: Başvuru listesi hasar görmüş! Lütfen bunu "
+"vim-dev@vim.org adresine bildirin"
+
+msgid ""
+"E571: Sorry, this command is disabled: the Tcl library could not be loaded."
+msgstr "E571: Üzgünüm, bu komut etkin değil: Tcl kitaplığı yüklenemedi."
+
+#, c-format
+msgid "E572: exit code %d"
+msgstr "E572: %d çıkış kodu"
+
+msgid "cannot get line"
+msgstr "satır alınamıyor"
+
+msgid "Unable to register a command server name"
+msgstr "Bir komut sunucusu adı kaydedilemiyor"
+
+msgid "E248: Failed to send command to the destination program"
+msgstr "E248: Hedef programa komut gönderimi başarısız oldu"
+
+#, c-format
+msgid "E573: Invalid server id used: %s"
+msgstr "E573: Geçersiz sunucu kimliği kullanıldı: %s"
+
+msgid "E251: VIM instance registry property is badly formed. Deleted!"
+msgstr "E251: VİM oturumu kayıt değeri düzgün oluşturulmamış. Silindi!"
+
+msgid " Keyword completion (^N^P)"
+msgstr " Anahtar sözcük tamamlaması (^N^P)"
+
+msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+msgstr " ^X kipi (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+
+msgid " Whole line completion (^L^N^P)"
+msgstr " Tam satır tamamlaması (^L^N^P)"
+
+msgid " File name completion (^F^N^P)"
+msgstr " Dosya adı tamamlaması (^F^N^P)"
+
+msgid " Tag completion (^]^N^P)"
+msgstr " Etiket tamamlaması (^]^N^P)"
+
+msgid " Path pattern completion (^N^P)"
+msgstr " Yol dizgisi tamamlaması (^N^P)"
+
+msgid " Definition completion (^D^N^P)"
+msgstr " Tanım tamamlaması (^D^N^P)"
+
+msgid " Dictionary completion (^K^N^P)"
+msgstr " Sözlük tamamlaması (^K^N^P)"
+
+msgid " Thesaurus completion (^T^N^P)"
+msgstr " Eşanlamlılar sözlüğü tamamlaması (^T^N^P)"
+
+msgid " Command-line completion (^V^N^P)"
+msgstr " Komut satırı tamamlaması (^V^N^P)"
+
+msgid " User defined completion (^U^N^P)"
+msgstr " Kullanıcı tanımlı tamamlamalar (^U^N^P)"
+
+msgid " Omni completion (^O^N^P)"
+msgstr " Omni tamamlaması (^O^N^P)"
+
+msgid " Spelling suggestion (s^N^P)"
+msgstr " Yazım önerisi (s^N^P)"
+
+msgid " Keyword Local completion (^N^P)"
+msgstr " Dahili anahtar sözcük tamamlaması (^N^P)"
+
+msgid "Hit end of paragraph"
+msgstr "Paragrafın sonuna varıldı"
+
+msgid "E839: Completion function changed window"
+msgstr "E839: Tamamlama işlevi pencereyi değiştirdi"
+
+msgid "E840: Completion function deleted text"
+msgstr "E840: Tamamlama işlevi metni sildi"
+
+msgid "'dictionary' option is empty"
+msgstr "'dictionary' seçeneği boş"
+
+msgid "'thesaurus' option is empty"
+msgstr "'thesaurus' seçeneği boş"
+
+#, c-format
+msgid "Scanning dictionary: %s"
+msgstr "Sözlük taranıyor: %s"
+
+msgid " (insert) Scroll (^E/^Y)"
+msgstr " (ekle) Kaydır (^E/^Y)"
+
+msgid " (replace) Scroll (^E/^Y)"
+msgstr " (değiştir) Kaydır (^E/^Y)"
+
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() yalnızca Ekleme kipinde kullanılabilir"
+
+#, c-format
+msgid "Scanning: %s"
+msgstr "Taranıyor: %s"
+
+msgid "Scanning tags."
+msgstr "Etiketler taranıyor..."
+
+msgid "match in file"
+msgstr "dosya içinde eşleşme"
+
+msgid " Adding"
+msgstr " Ekleniyor"
+
+msgid "-- Searching..."
+msgstr "-- Aranıyor..."
+
+msgid "Back at original"
+msgstr "Başlangıca geri dönüldü"
+
+msgid "Word from other line"
+msgstr "Sözcük diğer satırdan"
+
+msgid "The only match"
+msgstr "Naçizane eşleşme"
+
+#, c-format
+msgid "match %d of %d"
+msgstr "eşleşme %d/%d"
+
+#, c-format
+msgid "match %d"
+msgstr "eşleşme %d"
+
+#, c-format
+msgid "E938: Duplicate key in JSON: \"%s\""
+msgstr "E938: JSON'da yinelenmiş anahtar: \"%s\""
+
+#, c-format
+msgid "E899: Argument of %s must be a List or Blob"
+msgstr "E899: %s değişkeni bir liste veya ikili geniş nesne olmalıdır"
+
+#, c-format
+msgid "E696: Missing comma in List: %s"
+msgstr "E696: Listede eksik virgül: %s"
+
+#, c-format
+msgid "E697: Missing end of List ']': %s"
+msgstr "E697: Liste sonunda ']' eksik: %s"
+
+msgid "sort() argument"
+msgstr "sort() değişkeni"
+
+msgid "uniq() argument"
+msgstr "uniq() değişkeni"
+
+msgid "E702: Sort compare function failed"
+msgstr "E702: Sıralayıp karşılaştırma işlevi başarısız oldu"
+
+msgid "E882: Uniq compare function failed"
+msgstr "E882: Benzersizlik karşılaştırma işlevi başarısız oldu"
+
+msgid "map() argument"
+msgstr "map() değişkeni"
+
+msgid "filter() argument"