diff options
-rw-r--r-- | runtime/doc/todo.txt | 4 | ||||
-rw-r--r-- | runtime/doc/version8.txt | 194 | ||||
-rw-r--r-- | runtime/ftplugin/git.vim | 4 | ||||
-rw-r--r-- | runtime/ftplugin/gitcommit.vim | 8 | ||||
-rw-r--r-- | runtime/ftplugin/gitrebase.vim | 30 | ||||
-rw-r--r-- | runtime/ftplugin/haml.vim | 6 | ||||
-rw-r--r-- | runtime/ftplugin/markdown.vim | 46 | ||||
-rw-r--r-- | runtime/ftplugin/sass.vim | 20 | ||||
-rw-r--r-- | runtime/indent/haml.vim | 4 | ||||
-rw-r--r-- | runtime/syntax/git.vim | 8 | ||||
-rw-r--r-- | runtime/syntax/gitcommit.vim | 15 | ||||
-rw-r--r-- | runtime/syntax/gitconfig.vim | 10 | ||||
-rw-r--r-- | runtime/syntax/gitrebase.vim | 35 | ||||
-rw-r--r-- | runtime/syntax/haml.vim | 4 | ||||
-rw-r--r-- | runtime/syntax/markdown.vim | 66 | ||||
-rw-r--r-- | runtime/syntax/sass.vim | 11 | ||||
-rw-r--r-- | runtime/syntax/scss.vim | 11 |
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_minlines syn case ignore -syn match markdownValid '[<>]\c[a-z/$!]\@!' -syn match markdownValid '&\%(#\=\w*;\)\@!' +syn match markdownValid '[<>]\c[a-z/$!]\@!' transparent contains=NONE +syn match markdownValid '&\%(#\=\w*;\)\@!' transparent contains=NONE syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule -syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError +syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError,markdownValid syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownHeadingRule "^[=-]\+$" contained -syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained -syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained -syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained -syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained -syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained -syn region markdownH6 matchgroup=markd |