summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-12-05 22:47:25 +0100
committerBram Moolenaar <Bram@vim.org>2019-12-05 22:47:25 +0100
commitc08ee7476b19f9b4de5df287797af87c4e3fba0a (patch)
tree2e62f5130c143d521d8155dbf79038047e6b33fe /runtime
parente38eab22c1fb950127f0307a9904de6d4561dc70 (diff)
Update runtime files.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/doc/todo.txt4
-rw-r--r--runtime/doc/version8.txt194
-rw-r--r--runtime/ftplugin/git.vim4
-rw-r--r--runtime/ftplugin/gitcommit.vim8
-rw-r--r--runtime/ftplugin/gitrebase.vim30
-rw-r--r--runtime/ftplugin/haml.vim6
-rw-r--r--runtime/ftplugin/markdown.vim46
-rw-r--r--runtime/ftplugin/sass.vim20
-rw-r--r--runtime/indent/haml.vim4
-rw-r--r--runtime/syntax/git.vim8
-rw-r--r--runtime/syntax/gitcommit.vim15
-rw-r--r--runtime/syntax/gitconfig.vim10
-rw-r--r--runtime/syntax/gitrebase.vim35
-rw-r--r--runtime/syntax/haml.vim4
-rw-r--r--runtime/syntax/markdown.vim66
-rw-r--r--runtime/syntax/sass.vim11
-rw-r--r--runtime/syntax/scss.vim11
17 files changed, 383 insertions, 93 deletions
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index c2ceda92d2..10181b8a00 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 Dec 03
+*todo.txt* For Vim version 8.1. Last change: 2019 Dec 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -181,6 +181,8 @@ default one. #4698
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
+Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320)
+
Modeless selection doesn't work in gvim. (#4783)
Caused by patch 8.1.1534.
diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt
index 23f3cbffa4..c74ca0b3df 100644
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt* For Vim version 8.1. Last change: 2019 Dec 04
+*version8.txt* For Vim version 8.1. Last change: 2019 Dec 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35845,7 +35845,7 @@ Solution: Ignore the "browse" modifier in another place when exiting.
Files: src/ex_cmds.c
Patch 8.1.1595
-Problem: MS-Windows with VIMDLL: colors wrong in console.
+Problem: MS-Windows with VIMDLL: colors wrong in the GUI.
Solution: Do not set the terminal colors when not using the GUI. (Ken
Takata, closes #4588)
Files: src/syntax.c
@@ -40741,5 +40741,195 @@ Problem: ml_get error when accessing Visual area in 'statusline'.
Solution: Disable Visual mode when using another window. (closes #5278)
Files: src/testdir/test_statusline.vim, src/buffer.c
+Patch 8.1.2364
+Problem: Termwinscroll test is flaky on FreeBSD.
+Solution: Add to list of flaky tests. Rename function.
+Files: src/testdir/runtest.vim, src/testdir/test_terminal.vim
+
+Patch 8.1.2365
+Problem: Missing tests for recent popupwin changes.
+Solution: Add test cases.
+Files: src/testdir/test_popupwin.vim
+
+Patch 8.1.2366
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/ascii.h, src/beval.h, src/dosinst.h, src/feature.h,
+ src/glbl_ime.h, src/globals.h, src/gui_at_sb.h, src/gui_gtk_f.h,
+ src/gui_gtk_vms.h, src/gui.h, src/gui_x11_pm.h, src/gui_xmebwp.h,
+ src/if_cscope.h, src/if_mzsch.h, src/if_ole.h, src/if_py_both.h,
+ src/iscygpty.h, src/keymap.h, src/macros.h, src/nbdebug.h,
+ src/option.h, src/os_amiga.h, src/os_beos.h, src/os_dos.h,
+ src/os_mac.h, src/os_qnx.h, src/os_unix.h, src/os_unixx.h,
+ src/os_vms_conf.h, src/os_win32.h, src/proto.h, src/regexp.h,
+ src/spell.h, src/structs.h, src/term.h, src/version.h, src/vimio.h
+
+Patch 8.1.2367
+Problem: Registers are not sufficiently tested.
+Solution: Add a few more test cases. (Yegappan Lakshmanan, closes #5288)
+Files: src/testdir/test_registers.vim
+
+Patch 8.1.2368
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/autocmd.c, src/beval.c, src/blob.c, src/blowfish.c,
+ src/buffer.c, src/change.c, src/channel.c, src/charset.c,
+ src/cindent.c, src/crypt.c, src/crypt_zip.c
+
+Patch 8.1.2369
+Problem: Cannot build with quickfix and without text properties.
+Solution: Fix typo. (Naruhiko Nishino)
+Files: src/popupmenu.c
+
+Patch 8.1.2370
+Problem: Build problems on VMS.
+Solution: Adjust the build file. (Zoltan Arpadffy)
+Files: src/Make_vms.mms, src/os_unix.c, src/os_vms.c
+
+Patch 8.1.2371
+Problem: FEAT_TEXT_PROP is a confusing name.
+Solution: Use FEAT_PROP_POPUP. (Naruhiko Nishino, closes #5291)
+Files: runtime/doc/popup.txt, src/beval.c, src/buffer.c, src/change.c,
+ src/drawline.c, src/drawscreen.c, src/edit.c, src/eval.c,
+ src/evalbuffer.c, src/evalfunc.c, src/evalwindow.c, src/ex_cmds.c,
+ src/ex_docmd.c, src/feature.h, src/fileio.c, src/getchar.c,
+ src/globals.h, src/gui.c, src/gui_w32.c, src/indent.c,
+ src/insexpand.c, src/macros.h, src/main.c, src/memline.c,
+ src/misc2.c, src/mouse.c, src/move.c, src/ops.c, src/option.h,
+ src/optiondefs.h, src/optionstr.c, src/popupmenu.c,
+ src/popupwin.c, src/proto.h, src/screen.c, src/search.c,
+ src/sign.c, src/structs.h, src/tag.c, src/testdir/runtest.vim,
+ src/testdir/test_execute_func.vim, src/testdir/test_popupwin.vim,
+ src/testdir/test_popupwin_textprop.vim, src/textprop.c, src/ui.c,
+ src/version.c, src/vim.h, src/window.c
+
+Patch 8.1.2372
+Problem: VMS: failing realloc leaks memory. (Chakshu Gupta)
+Solution: Free the memory. (partly fixes #5292)
+Files: src/os_vms.c
+
+Patch 8.1.2373
+Problem: Cannot build with +popupwin but without +quickfix. (John Marriott)
+Solution: Adjust #ifdefs.
+Files: src/ex_cmds.c, src/popupmenu.c, src/popupwin.c, src/fileio.c,
+ src/testdir/test_compiler.vim, src/testdir/test_tagjump.vim,
+ src/testdir/test86.in, src/testdir/test87.in,
+ src/testdir/test_autocmd.vim, src/testdir/test_bufwintabinfo.vim,
+ src/testdir/test_channel.vim, src/testdir/test_edit.vim,
+ src/testdir/test_execute_func.vim,
+ src/testdir/test_filter_cmd.vim, src/testdir/test_gui.vim,
+ src/testdir/test_makeencoding.vim, src/testdir/test_mksession.vim,
+ src/testdir/test_normal.vim, src/testdir/test_popup.vim,
+ src/testdir/test_popupwin.vim, src/testdir/test_preview.vim,
+ src/testdir/test_startup.vim, src/testdir/test_statusline.vim,
+ src/testdir/test_tabpage.vim, src/testdir/test_window_cmd.vim,
+ src/testdir/test_window_id.vim
+
+Patch 8.1.2374
+Problem: Unused parts of libvterm are included.
+Solution: Delete the unused files.
+Files: Filelist, src/libvterm/bin/vterm-ctrl.c,
+ src/libvterm/bin/unterm.c, src/libvterm/bin/vterm-dump.c
+
+Patch 8.1.2375
+Problem: No sufficient testing for registers.
+Solution: Add more test cases. (Yegappan Lakshmanan, closes #5296)
+ Fix that "p" on last virtual column of tab inserts spaces.
+Files: src/register.c, src/testdir/test_registers.vim,
+ src/testdir/test_virtualedit.vim, src/testdir/test_visual.vim
+
+Patch 8.1.2376
+Problem: Preprocessor indents are incorrect.
+Solution: Fix the indents. (Ken Takata, closes #5298)
+Files: src/drawline.c, src/gui_w32.c src/os_mswin.c src/os_win32.c
+ src/proto.h
+
+Patch 8.1.2377
+Problem: GUI: when losing focus a pending operator is executed.
+Solution: Do not execute an operator when getting K_IGNORE. (closes #5300)
+Files: src/normal.c
+
+Patch 8.1.2378
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/dict.c, src/diff.c, src/digraph.c, src/dosinst.c, src/edit.c,
+ src/eval.c, src/evalbuffer.c, src/evalfunc.c
+
+Patch 8.1.2379
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c,
+ src/ex_getln.c, src/fileio.c, src/filepath.c, src/findfile.c,
+ src/fold.c
+
+Patch 8.1.2380
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/getchar.c, src/gui.c, src/gui_at_fs.c, src/gui_at_sb.c,
+ src/gui_athena.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_f.c,
+ src/gui_gtk_x11.c
+
+Patch 8.1.2381
+Problem: Not all register related code is covered by tests.
+Solution: Add more test cases. (Yegappan Lakshmanan, closes #5301)
+Files: src/testdir/test_marks.vim, src/testdir/test_registers.vim,
+ src/testdir/test_virtualedit.vim
+
+Patch 8.1.2382
+Problem: MS-Windows: When using VTP bold+inverse doesn't work.
+Solution: Compare with the default colors. (Nobuhiro Takasaki, closes #5303)
+Files: src/os_win32.c, src/proto/os_win32.pro, src/screen.c
+
+Patch 8.1.2383
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w32.c,
+ src/gui_x11.c, src/gui_xmdlg.c, src/gui_xmebw.c
+
+Patch 8.1.2384
+Problem: Test 48 is old style.
+Solution: Merge test cases into new style test. (Yegappan Lakshmanan,
+ closes #5307)
+Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms,
+ src/testdir/test48.in, src/testdir/test48.ok,
+ src/testdir/test_virtualedit.vim
+
+Patch 8.1.2385
+Problem: Opening cmdline window with feedkeys() does not work. (Yegappan
+ Lakshmanan)
+Solution: Recognize K_CMDWIN also when ex_normal_busy is set.
+Files: src/ex_getln.c, src/testdir/test_cmdline.vim
+
+Patch 8.1.2386
+Problem: 'wincolor' is not used for 'listchars'.
+Solution: Combine the colors. (closes #5308)
+Files: src/drawline.c, src/testdir/test_highlight.vim,
+ src/testdir/dumps/Test_wincolor_lcs.dump
+
+Patch 8.1.2387
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/hardcopy.c, src/hashtab.c, src/if_cscope.c, src/if_lua.c,
+ src/if_mzsch.c, src/if_perlsfio.c, src/if_python.c,
+ src/if_python3.c, src/if_ruby.c, src/if_tcl.c, src/if_xcmdsrv.c
+
+Patch 8.1.2388
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/json.c, src/json_test.c, src/kword_test.c, src/list.c,
+ src/main.c, src/mark.c, src/mbyte.c, src/memfile.c,
+ src/memfile_test.c, src/memline.c, src/menu.c
+
+Patch 8.1.2389
+Problem: Using old C style comments.
+Solution: Use // comments where appropriate.
+Files: src/libvterm/src/screen.c, src/libvterm/src/unicode.c,
+ src/libvterm/src/vterm.c, src/libvterm/t/harness.c,
+ src/libvterm/include/vterm.h, src/xdiff/xdiffi.c,
+ src/xdiff/xemit.c, src/xdiff/xhistogram.c, src/xdiff/xpatience.c,
+ src/xdiff/xutils.c, src/xdiff/xdiff.h, src/xdiff/xdiffi.h,
+ src/xdiff/xemit.h, src/xdiff/xinclude.h, src/xdiff/xmacros.h,
+ src/xdiff/xprepare.h, src/xdiff/xtypes.h, src/xdiff/xutils.h
+
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/ftplugin/git.vim b/runtime/ftplugin/git.vim
index b3d5cff804..75b20f021e 100644
--- a/runtime/ftplugin/git.vim
+++ b/runtime/ftplugin/git.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
@@ -10,7 +10,7 @@ endif
let b:did_ftplugin = 1
if !exists('b:git_dir')
- if expand('%:p') =~# '[\/]\.git[\/]modules[\/]'
+ if expand('%:p') =~# '[\/]\.git[\/]modules[\/]\|:[\/][\/]\|^\a\a\+:'
" Stay out of the way
elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')
diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim
index 6767ff719e..9b1998acaa 100644
--- a/runtime/ftplugin/gitcommit.vim
+++ b/runtime/ftplugin/gitcommit.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: git commit file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
@@ -13,8 +13,10 @@ let b:did_ftplugin = 1
setlocal comments=:# commentstring=#\ %s
setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
-setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q
-let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms<'
+setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q formatoptions+=n
+setlocal formatlistpat+=\\\|^\\s*[-*+]\\s\\+
+
+let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms< formatlistpat<'
if exists("g:no_gitcommit_commands") || v:version < 700
finish
diff --git a/runtime/ftplugin/gitrebase.vim b/runtime/ftplugin/gitrebase.vim
index 6f73b5c499..2fed53c829 100644
--- a/runtime/ftplugin/gitrebase.vim
+++ b/runtime/ftplugin/gitrebase.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
@@ -18,27 +18,31 @@ if !exists("b:undo_ftplugin")
endif
let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
-function! s:choose(word)
+function! s:choose(word) abort
s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
endfunction
-function! s:cycle()
- call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick'))
+function! s:cycle(count) abort
+ let words = ['pick', 'edit', 'fixup', 'squash', 'reword', 'drop']
+ let index = index(map(copy(words), 'v:val[0]'), getline('.')[0])
+ let index = ((index < 0 ? 0 : index) + 10000 * len(words) + a:count) % len(words)
+ call s:choose(words[index])
endfunction
-command! -buffer -bar Pick :call s:choose('pick')
-command! -buffer -bar Squash :call s:choose('squash')
-command! -buffer -bar Edit :call s:choose('edit')
-command! -buffer -bar Reword :call s:choose('reword')
-command! -buffer -bar Fixup :call s:choose('fixup')
-command! -buffer -bar Cycle :call s:cycle()
-" The above are more useful when they are mapped; for example:
-"nnoremap <buffer> <silent> S :Cycle<CR>
+command! -buffer -bar -range Pick :<line1>,<line2>call s:choose('pick')
+command! -buffer -bar -range Squash :<line1>,<line2>call s:choose('squash')
+command! -buffer -bar -range Edit :<line1>,<line2>call s:choose('edit')
+command! -buffer -bar -range Reword :<line1>,<line2>call s:choose('reword')
+command! -buffer -bar -range Fixup :<line1>,<line2>call s:choose('fixup')
+command! -buffer -bar -range Drop :<line1>,<line2>call s:choose('drop')
+command! -buffer -count=1 -bar -bang Cycle call s:cycle(<bang>0 ? -<count> : <count>)
if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
finish
endif
nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
+nnoremap <buffer> <silent> <C-A> :<C-U><C-R>=v:count1<CR>Cycle<CR>
+nnoremap <buffer> <silent> <C-X> :<C-U><C-R>=v:count1<CR>Cycle!<CR>
-let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K"
+let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> K'|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
diff --git a/runtime/ftplugin/haml.vim b/runtime/ftplugin/haml.vim
index e74530b556..6f30169958 100644
--- a/runtime/ftplugin/haml.vim
+++ b/runtime/ftplugin/haml.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -37,6 +37,8 @@ endif
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
let b:did_ftplugin = 1
+let &l:define .= empty(&l:define ? '' : '\|') . '^\s*\%(%\w*\)\=\%(\.[[:alnum:]_-]\+\)*#'
+
" Combine the new set of values with those previously included.
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
@@ -60,7 +62,7 @@ endif
setlocal comments= commentstring=-#\ %s
-let b:undo_ftplugin = "setl cms< com< "
+let b:undo_ftplugin = "setl def< cms< com< "
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
let &cpo = s:save_cpo
diff --git a/runtime/ftplugin/markdown.vim b/runtime/ftplugin/markdown.vim
index 277ba94e8b..fc1d9e068b 100644
--- a/runtime/ftplugin/markdown.vim
+++ b/runtime/ftplugin/markdown.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:did_ftplugin")
finish
@@ -9,7 +9,7 @@ endif
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
-setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
+setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=<!--%s-->
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
@@ -19,32 +19,56 @@ else
let b:undo_ftplugin = "setl cms< com< fo< flp<"
endif
-function! MarkdownFold()
+function! s:NotCodeBlock(lnum) abort
+ return synIDattr(synID(v:lnum, 1, 1), 'name') !=# 'markdownCode'
+endfunction
+
+function! MarkdownFold() abort
let line = getline(v:lnum)
- " Regular headers
- let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=')
- if depth > 0
- return ">" . depth
+ if line =~# '^#\+ ' && s:NotCodeBlock(v:lnum)
+ return ">" . match(line, ' ')
endif
- " Setext style headings
let nextline = getline(v:lnum + 1)
- if (line =~ '^.\+$') && (nextline =~ '^=\+$')
+ if (line =~ '^.\+$') && (nextline =~ '^=\+$') && s:NotCodeBlock(v:lnum + 1)
return ">1"
endif
- if (line =~ '^.\+$') && (nextline =~ '^-\+$')
+ if (line =~ '^.\+$') && (nextline =~ '^-\+$') && s:NotCodeBlock(v:lnum + 1)
return ">2"
endif
return "="
endfunction
+function! s:HashIndent(lnum) abort
+ let hash_header = matchstr(getline(a:lnum), '^#\{1,6}')
+ if len(hash_header)
+ return hash_header
+ else
+ let nextline = getline(a:lnum + 1)
+ if nextline =~# '^=\+\s*$'
+ return '#'
+ elseif nextline =~# '^-\+\s*$'
+ return '##'
+ endif
+ endif
+endfunction
+
+function! MarkdownFoldText() abort
+ let hash_indent = s:HashIndent(v:foldstart)
+ let title = substitute(getline(v:foldstart), '^#\+\s*', '', '')
+ let foldsize = (v:foldend - v:foldstart + 1)
+ let linecount = '['.foldsize.' lines]'
+ return hash_indent.' '.title.' '.linecount
+endfunction
+
if has("folding") && exists("g:markdown_folding")
setlocal foldexpr=MarkdownFold()
setlocal foldmethod=expr
- let b:undo_ftplugin .= " foldexpr< foldmethod<"
+ setlocal foldtext=MarkdownFoldText()
+ let b:undo_ftplugin .= " foldexpr< foldmethod< foldtext<"
endif
" vim:set sw=2:
diff --git a/runtime/ftplugin/sass.vim b/runtime/ftplugin/sass.vim
index d6909e7ad5..9ce446137a 100644
--- a/runtime/ftplugin/sass.vim
+++ b/runtime/ftplugin/sass.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -13,11 +13,25 @@ let b:undo_ftplugin = "setl com< cms< def< inc< inex< ofu< sua<"
setlocal comments=://
setlocal commentstring=//\ %s
-setlocal define=^\\s*\\%(@mixin\\\|=\\)
-setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','')
+setlocal includeexpr=SassIncludeExpr(v:fname)
setlocal omnifunc=csscomplete#CompleteCSS
setlocal suffixesadd=.sass,.scss,.css
+if &filetype =~# '\<s[ac]ss]\>'
+ setlocal iskeyword+=-
+ setlocal iskeyword+=$
+ setlocal iskeyword+=%
+ let b:undo_ftplugin .= ' isk<'
+endif
+let &l:define = '^\C\v\s*%(\@function|\@mixin|\=)|^\s*%(\$[[:alnum:]-]+:|[%.][:alnum:]-]+\s*%(\{|$))@='
let &l:include = '^\s*@import\s\+\%(url(\)\=["'']\='
+function! SassIncludeExpr(file) abort
+ let partial = substitute(a:file, '\%(.*/\|^\)\zs', '_', '')
+ if !empty(findfile(partial))
+ return partial
+ endif
+ return a:file
+endfunction
+
" vim:set sw=2:
diff --git a/runtime/indent/haml.vim b/runtime/indent/haml.vim
index e6416e6f53..baca1d49d9 100644
--- a/runtime/indent/haml.vim
+++ b/runtime/indent/haml.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2017 Jun 13
+" Last Change: 2019 Dec 05
if exists("b:did_indent")
finish
@@ -10,7 +10,7 @@ runtime! indent/ruby.vim
unlet! b:did_indent
let b:did_indent = 1
-setlocal autoindent sw=2 et
+setlocal autoindent
setlocal indentexpr=GetHamlIndent()
setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when
diff --git a/runtime/syntax/git.vim b/runtime/syntax/git.vim
index 48264c7bf2..a8467edd43 100644
--- a/runtime/syntax/git.vim
+++ b/runtime/syntax/git.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2010 May 21
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -13,7 +13,7 @@ syn sync minlines=50
syn include @gitDiff syntax/diff.vim
syn region gitHead start=/\%^/ end=/^$/
-syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
+syn region gitHead start=/\%(^commit\%( \x\{40\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
" For git reflog and git show ...^{tree}, avoid sync issues
syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/
@@ -25,12 +25,14 @@ syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\)
syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
+syn match gitDiffAdded "{+.*+}" contained containedin=gitDiff
syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
+syn match gitDiffRemoved "\[-.*-\]" contained containedin=gitDiff
syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite
-syn match gitMode /^\d\{6\}/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite
+syn match gitMode /^\d\{6\}\>/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite
syn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
syn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite
diff --git a/runtime/syntax/gitcommit.vim b/runtime/syntax/gitcommit.vim
index 5e0642fbcc..63b1ce920f 100644
--- a/runtime/syntax/gitcommit.vim
+++ b/runtime/syntax/gitcommit.vim
@@ -2,7 +2,7 @@
" Language: git commit file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.git/COMMIT_EDITMSG
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -18,11 +18,18 @@ endif
syn include @gitcommitDiff syntax/diff.vim
syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff
-syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl
-syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
+syn match gitcommitSummary "^.*\%<51v." contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
syn match gitcommitOverflow ".*" contained contains=@Spell
syn match gitcommitBlank "^[^#].*" contained contains=@Spell
-syn match gitcommitComment "^#.*"
+
+if get(g:, "gitcommit_cleanup") is# "scissors"
+ syn match gitcommitFirstLine "\%^.*" nextgroup=gitcommitBlank skipnl
+ syn region gitcommitComment start=/^# -\+ >8 -\+$/ end=/\%$/ contains=gitcommitDiff
+else
+ syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl
+ syn match gitcommitComment "^#.*"
+endif
+
syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent
syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
diff --git a/runtime/syntax/gitconfig.vim b/runtime/syntax/gitconfig.vim
index 668764eac1..e5eaf10f94 100644
--- a/runtime/syntax/gitconfig.vim
+++ b/runtime/syntax/gitconfig.vim
@@ -2,24 +2,22 @@
" Language: git config file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: gitconfig, .gitconfig, *.git/config
-" Last Change: 2019 Sep 27
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
endif
-setlocal iskeyword+=-
-setlocal iskeyword-=_
syn case ignore
syn sync minlines=10
syn match gitconfigComment "[#;].*" contains=@Spell
syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]"
syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]'
-syn match gitconfigVariable "\%(^\s*\)\@<=\a\k*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite
+syn match gitconfigVariable "\%(^\s*\)\@<=\a[a-z0-9-]*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite
syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend
syn keyword gitconfigBoolean true false yes no contained
-syn match gitconfigNumber "\d\+" contained
+syn match gitconfigNumber "\<\d\+\>" contained
syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError
syn match gitconfigError +\\.+ contained
syn match gitconfigEscape +\\[\\"ntb]+ contained
@@ -32,7 +30,7 @@ hi def link gitconfigBoolean Boolean
hi def link gitconfigNumber Number
hi def link gitconfigString String
hi def link gitconfigDelim Delimiter
-hi def link gitconfigEscape Delimiter
+hi def link gitconfigEscape Special
hi def link gitconfigError Error
let b:current_syntax = "gitconfig"
diff --git a/runtime/syntax/gitrebase.vim b/runtime/syntax/gitrebase.vim
index a944c14dd7..1ec2b59045 100644
--- a/runtime/syntax/gitrebase.vim
+++ b/runtime/syntax/gitrebase.vim
@@ -2,7 +2,7 @@
" Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: git-rebase-todo
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -10,31 +10,48 @@ endif
syn case match
-syn match gitrebaseHash "\v<\x{7,40}>" contained
-syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite
+syn match gitrebaseHash "\v<\x{7,}>" contained
+syn match gitrebaseCommit "\v<\x{7,}>" nextgroup=gitrebaseSummary skipwhite
syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite
+syn match gitrebaseBreak "\v^b%(reak)=>"
syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseNoop "\v^noop>"
+syn match gitrebaseMerge "\v^m(erge)=>" nextgroup=gitrebaseMergeOption,gitrebaseName skipwhite
+syn match gitrebaseLabel "\v^l(abel)=>" nextgroup=gitrebaseName skipwhite
+syn match gitrebaseReset "\v^r(eset)=>" nextgroup=gitrebaseName skipwhite
syn match gitrebaseSummary ".*" contains=gitrebaseHash contained
syn match gitrebaseCommand ".*" contained
-syn match gitrebaseComment "^#.*" contains=gitrebaseHash
+syn match gitrebaseComment "^\s*#.*" contains=gitrebaseHash
syn match gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseMergeOption "\v-[Cc]>" nextgroup=gitrebaseMergeCommit skipwhite contained
+syn match gitrebaseMergeCommit "\v<\x{7,}>" nextgroup=gitrebaseName skipwhite contained
+syn match gitrebaseName "\v[^[:space:].*?i:^~/-]\S+" nextgroup=gitrebaseMergeComment skipwhite contained
+syn match gitrebaseMergeComment "#" nextgroup=gitrebaseSummary skipwhite contained
hi def link gitrebaseCommit gitrebaseHash
hi def link gitrebaseHash Identifier
-hi def link gitrebasePick Statement
-hi def link gitrebaseReword Number
+hi def link gitrebasePick Type
+hi def link gitrebaseReword Conditional
hi def link gitrebaseEdit PreProc
-hi def link gitrebaseSquash Type
-hi def link gitrebaseFixup Special
-hi def link gitrebaseExec Function
+hi def link gitrebaseSquash Statement
+hi def link gitrebaseFixup Repeat
+hi def link gitrebaseExec Operator
+hi def link gitrebaseBreak Macro
hi def link gitrebaseDrop Comment
+hi def link gitrebaseNoop Comment
+hi def link gitrebaseMerge Exception
+hi def link gitrebaseLabel Label
+hi def link gitrebaseReset Keyword
hi def link gitrebaseSummary String
hi def link gitrebaseComment Comment
hi def link gitrebaseSquashError Error
+hi def link gitrebaseMergeCommit gitrebaseCommit
+hi def link gitrebaseMergeComment gitrebaseComment
+hi def link gitrebaseName Tag
let b:current_syntax = "gitrebase"
diff --git a/runtime/syntax/haml.vim b/runtime/syntax/haml.vim
index 5369695c22..c14b88f502 100644
--- a/runtime/syntax/haml.vim
+++ b/runtime/syntax/haml.vim
@@ -2,7 +2,7 @@
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.haml
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -38,7 +38,7 @@ syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,
syn match hamlSelfCloser "/" contained
syn match hamlClassChar "\." contained nextgroup=hamlClass
syn match hamlIdChar "#{\@!" contained nextgroup=hamlId
-syn match hamlClass "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
+syn match hamlClass "\%(\w\|-\|\:\)\+" contained nextgroup=@hamlComponent
syn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
syn region hamlDocType start="^\s*!!!" end="$"
diff --git a/runtime/syntax/markdown.vim b/runtime/syntax/markdown.vim
index 1955a7443e..0321ca3ce1 100644
--- a/runtime/syntax/markdown.vim
+++ b/runtime/syntax/markdown.vim
@@ -2,7 +2,7 @@
" Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.markdown
-" Last Change: 2016 Aug 29
+" Last Change: 2019 Dec 05
if exists("b:current_syntax")
finish
@@ -18,37 +18,46 @@ unlet! b:current_syntax
if !exists('g:markdown_fenced_languages')
let g:markdown_fenced_languages = []
endif
+let s:done_include = {}
for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
+ if has_key(s:done_include, matchstr(s:type,'[^.]*'))
+ continue
+ endif
if s:type =~ '\.'
let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
endif
exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
unlet! b:current_syntax
+ let s:done_include[matchstr(s:type,'[^.]*')] = 1
endfor
unlet! s:type
+unlet! s:done_include
-syn sync minlines=10
+if !exists('g:markdown_minlines')
+ let g:markdown_minlines = 50
+endif
+execute 'syn sync minlines=' . g:markdown_m