0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

Update runtime files.

This commit is contained in:
Bram Moolenaar 2019-12-05 22:47:25 +01:00
parent e38eab22c1
commit c08ee7476b
17 changed files with 384 additions and 94 deletions

View File

@ -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 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 When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994) with packages under "start". (xtal8, #1994)
Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320)
Modeless selection doesn't work in gvim. (#4783) Modeless selection doesn't work in gvim. (#4783)
Caused by patch 8.1.1534. Caused by patch 8.1.1534.

View File

@ -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 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 Files: src/ex_cmds.c
Patch 8.1.1595 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 Solution: Do not set the terminal colors when not using the GUI. (Ken
Takata, closes #4588) Takata, closes #4588)
Files: src/syntax.c 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) Solution: Disable Visual mode when using another window. (closes #5278)
Files: src/testdir/test_statusline.vim, src/buffer.c 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: vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: generic git output " Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " 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 " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))
@ -10,7 +10,7 @@ endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
if !exists('b:git_dir') if !exists('b:git_dir')
if expand('%:p') =~# '[\/]\.git[\/]modules[\/]' if expand('%:p') =~# '[\/]\.git[\/]modules[\/]\|:[\/][\/]\|^\a\a\+:'
" Stay out of the way " Stay out of the way
elseif expand('%:p') =~# '[\/]\.git[\/]worktrees' elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>') let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')

View File

@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: git commit file " Language: git commit file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " 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 " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))
@ -13,8 +13,10 @@ let b:did_ftplugin = 1
setlocal comments=:# commentstring=#\ %s setlocal comments=:# commentstring=#\ %s
setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72 setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q formatoptions+=n
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms<' 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 if exists("g:no_gitcommit_commands") || v:version < 700
finish finish

View File

@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: git rebase --interactive " Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " 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 " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))
@ -18,27 +18,31 @@ if !exists("b:undo_ftplugin")
endif endif
let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<" 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 s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
endfunction endfunction
function! s:cycle() function! s:cycle(count) abort
call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick')) 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 endfunction
command! -buffer -bar Pick :call s:choose('pick') command! -buffer -bar -range Pick :<line1>,<line2>call s:choose('pick')
command! -buffer -bar Squash :call s:choose('squash') command! -buffer -bar -range Squash :<line1>,<line2>call s:choose('squash')
command! -buffer -bar Edit :call s:choose('edit') command! -buffer -bar -range Edit :<line1>,<line2>call s:choose('edit')
command! -buffer -bar Reword :call s:choose('reword') command! -buffer -bar -range Reword :<line1>,<line2>call s:choose('reword')
command! -buffer -bar Fixup :call s:choose('fixup') command! -buffer -bar -range Fixup :<line1>,<line2>call s:choose('fixup')
command! -buffer -bar Cycle :call s:cycle() command! -buffer -bar -range Drop :<line1>,<line2>call s:choose('drop')
" The above are more useful when they are mapped; for example: command! -buffer -count=1 -bar -bang Cycle call s:cycle(<bang>0 ? -<count> : <count>)
"nnoremap <buffer> <silent> S :Cycle<CR>
if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps") if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
finish finish
endif endif
nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K' 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>'"

View File

@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Haml " Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " 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 " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@ -37,6 +37,8 @@ endif
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
let b:did_ftplugin = 1 let b:did_ftplugin = 1
let &l:define .= empty(&l:define ? '' : '\|') . '^\s*\%(%\w*\)\=\%(\.[[:alnum:]_-]\+\)*#'
" Combine the new set of values with those previously included. " Combine the new set of values with those previously included.
if exists("b:undo_ftplugin") if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
@ -60,7 +62,7 @@ endif
setlocal comments= commentstring=-#\ %s 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 \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
let &cpo = s:save_cpo let &cpo = s:save_cpo

View File

@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Markdown " Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2016 Aug 29 " Last Change: 2019 Dec 05
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
finish finish
@ -9,7 +9,7 @@ endif
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim 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 formatoptions+=tcqln formatoptions-=r formatoptions-=o
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]: setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
@ -19,32 +19,56 @@ else
let b:undo_ftplugin = "setl cms< com< fo< flp<" let b:undo_ftplugin = "setl cms< com< fo< flp<"
endif 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) let line = getline(v:lnum)
" Regular headers if line =~# '^#\+ ' && s:NotCodeBlock(v:lnum)
let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=') return ">" . match(line, ' ')
if depth > 0
return ">" . depth
endif endif
" Setext style headings
let nextline = getline(v:lnum + 1) let nextline = getline(v:lnum + 1)
if (line =~ '^.\+$') && (nextline =~ '^=\+$') if (line =~ '^.\+$') && (nextline =~ '^=\+$') && s:NotCodeBlock(v:lnum + 1)
return ">1" return ">1"
endif endif
if (line =~ '^.\+$') && (nextline =~ '^-\+$') if (line =~ '^.\+$') && (nextline =~ '^-\+$') && s:NotCodeBlock(v:lnum + 1)
return ">2" return ">2"
endif endif
return "=" return "="
endfunction 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") if has("folding") && exists("g:markdown_folding")
setlocal foldexpr=MarkdownFold() setlocal foldexpr=MarkdownFold()
setlocal foldmethod=expr setlocal foldmethod=expr
let b:undo_ftplugin .= " foldexpr< foldmethod<" setlocal foldtext=MarkdownFoldText()
let b:undo_ftplugin .= " foldexpr< foldmethod< foldtext<"
endif endif
" vim:set sw=2: " vim:set sw=2:

View File

@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Sass " Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " 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 " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@ -13,11 +13,25 @@ let b:undo_ftplugin = "setl com< cms< def< inc< inex< ofu< sua<"
setlocal comments=:// setlocal comments=://
setlocal commentstring=//\ %s setlocal commentstring=//\ %s
setlocal define=^\\s*\\%(@mixin\\\|=\\) setlocal includeexpr=SassIncludeExpr(v:fname)
setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','')
setlocal omnifunc=csscomplete#CompleteCSS setlocal omnifunc=csscomplete#CompleteCSS
setlocal suffixesadd=.sass,.scss,.css 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(\)\=["'']\=' 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: " vim:set sw=2:

View File

@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Haml " Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2017 Jun 13 " Last Change: 2019 Dec 05
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@ -10,7 +10,7 @@ runtime! indent/ruby.vim
unlet! b:did_indent unlet! b:did_indent
let b:did_indent = 1 let b:did_indent = 1
setlocal autoindent sw=2 et setlocal autoindent
setlocal indentexpr=GetHamlIndent() setlocal indentexpr=GetHamlIndent()
setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when

View File

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: generic git output " Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2010 May 21 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -13,7 +13,7 @@ syn sync minlines=50
syn include @gitDiff syntax/diff.vim syn include @gitDiff syntax/diff.vim
syn region gitHead start=/\%^/ end=/^$/ 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 " For git reflog and git show ...^{tree}, avoid sync issues
syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/ 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=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
syn match gitDiffAdded "{+.*+}" contained containedin=gitDiff
syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge 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 /^\%(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 /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev 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 gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
syn match gitIdentityHeader /^\%(Author\|Commit\|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 syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite

View File

@ -2,7 +2,7 @@
" Language: git commit file " Language: git commit file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.git/COMMIT_EDITMSG " Filenames: *.git/COMMIT_EDITMSG
" Last Change: 2016 Aug 29 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -18,11 +18,18 @@ endif
syn include @gitcommitDiff syntax/diff.vim syn include @gitcommitDiff syntax/diff.vim
syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff
syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl syn match gitcommitSummary "^.*\%<51v." contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
syn match gitcommitOverflow ".*" contained contains=@Spell syn match gitcommitOverflow ".*" contained contains=@Spell
syn match gitcommitBlank "^[^#].*" contained contains=@Spell syn match gitcommitBlank "^[^#].*" contained contains=@Spell
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 "^#.*" syn match gitcommitComment "^#.*"
endif
syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent
syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite

View File

@ -2,24 +2,22 @@
" Language: git config file " Language: git config file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: gitconfig, .gitconfig, *.git/config " Filenames: gitconfig, .gitconfig, *.git/config
" Last Change: 2019 Sep 27 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
endif endif
setlocal iskeyword+=-
setlocal iskeyword-=_
syn case ignore syn case ignore
syn sync minlines=10 syn sync minlines=10
syn match gitconfigComment "[#;].*" contains=@Spell syn match gitconfigComment "[#;].*" contains=@Spell
syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]" syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]"
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 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 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 region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError
syn match gitconfigError +\\.+ contained syn match gitconfigError +\\.+ contained
syn match gitconfigEscape +\\[\\"ntb]+ contained syn match gitconfigEscape +\\[\\"ntb]+ contained
@ -32,7 +30,7 @@ hi def link gitconfigBoolean Boolean
hi def link gitconfigNumber Number hi def link gitconfigNumber Number
hi def link gitconfigString String hi def link gitconfigString String
hi def link gitconfigDelim Delimiter hi def link gitconfigDelim Delimiter
hi def link gitconfigEscape Delimiter hi def link gitconfigEscape Special
hi def link gitconfigError Error hi def link gitconfigError Error
let b:current_syntax = "gitconfig" let b:current_syntax = "gitconfig"

View File

@ -2,7 +2,7 @@
" Language: git rebase --interactive " Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: git-rebase-todo " Filenames: git-rebase-todo
" Last Change: 2016 Aug 29 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -10,31 +10,48 @@ endif
syn case match syn case match
syn match gitrebaseHash "\v<\x{7,40}>" contained syn match gitrebaseHash "\v<\x{7,}>" contained
syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite syn match gitrebaseCommit "\v<\x{7,}>" nextgroup=gitrebaseSummary skipwhite
syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand 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 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 gitrebaseSummary ".*" contains=gitrebaseHash contained
syn match gitrebaseCommand ".*" 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 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 gitrebaseCommit gitrebaseHash
hi def link gitrebaseHash Identifier hi def link gitrebaseHash Identifier
hi def link gitrebasePick Statement hi def link gitrebasePick Type
hi def link gitrebaseReword Number hi def link gitrebaseReword Conditional
hi def link gitrebaseEdit PreProc hi def link gitrebaseEdit PreProc
hi def link gitrebaseSquash Type hi def link gitrebaseSquash Statement
hi def link gitrebaseFixup Special hi def link gitrebaseFixup Repeat
hi def link gitrebaseExec Function hi def link gitrebaseExec Operator
hi def link gitrebaseBreak Macro
hi def link gitrebaseDrop Comment 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 gitrebaseSummary String
hi def link gitrebaseComment Comment hi def link gitrebaseComment Comment
hi def link gitrebaseSquashError Error 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" let b:current_syntax = "gitrebase"

View File

@ -2,7 +2,7 @@
" Language: Haml " Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.haml " Filenames: *.haml
" Last Change: 2016 Aug 29 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -38,7 +38,7 @@ syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,
syn match hamlSelfCloser "/" contained syn match hamlSelfCloser "/" contained
syn match hamlClassChar "\." contained nextgroup=hamlClass syn match hamlClassChar "\." contained nextgroup=hamlClass
syn match hamlIdChar "#{\@!" contained nextgroup=hamlId 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 match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
syn region hamlDocType start="^\s*!!!" end="$" syn region hamlDocType start="^\s*!!!" end="$"

View File

@ -2,7 +2,7 @@
" Language: Markdown " Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.markdown " Filenames: *.markdown
" Last Change: 2016 Aug 29 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -18,37 +18,46 @@ unlet! b:current_syntax
if !exists('g:markdown_fenced_languages') if !exists('g:markdown_fenced_languages')
let g:markdown_fenced_languages = [] let g:markdown_fenced_languages = []
endif endif
let s:done_include = {}
for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")') 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 =~ '\.' if s:type =~ '\.'
let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
endif endif
exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
unlet! b:current_syntax unlet! b:current_syntax
let s:done_include[matchstr(s:type,'[^.]*')] = 1
endfor endfor
unlet! s:type 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 case ignore
syn match markdownValid '[<>]\c[a-z/$!]\@!' syn match markdownValid '[<>]\c[a-z/$!]\@!' transparent contains=NONE
syn match markdownValid '&\%(#\=\w*;\)\@!' syn match markdownValid '&\%(#\=\w*;\)\@!' transparent contains=NONE
syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar
syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule 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 markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
syn match markdownHeadingRule "^[=-]\+$" contained syn match markdownHeadingRule "^[=-]\+$" contained
syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH1 matchgroup=markdownH1Delimiter 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 markdownH2 matchgroup=markdownH2Delimiter 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 markdownH3 matchgroup=markdownH3Delimiter 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 markdownH4 matchgroup=markdownH4Delimiter 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 markdownH5 matchgroup=markdownH5Delimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH6 matchgroup=markdownH6Delimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock
@ -70,31 +79,40 @@ syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\%(\_[^][]\|\[\_[^][]*\]\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
let s:concealends = has('conceal') ? ' concealends' : '' let s:concealends = ''
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart' . s:concealends if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart' . s:concealends let s:concealends = ' concealends'
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends endif
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" skip="\\*" contains=markdownLineStart,@Spell' . s:concealends
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" skip="\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" skip="\\*" contains=markdownLineStart,@Spell' . s:concealends
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*````*.*$" end="^\s*````*\ze\s*$" keepend
syn match markdownFootnote "\[^[^\]]\+\]" syn match markdownFootnote "\[^[^\]]\+\]"
syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:" syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
if main_syntax ==# 'markdown' if main_syntax ==# 'markdown'
let s:done_include = {}
for s:type in g:markdown_fenced_languages for s:type in g:markdown_fenced_languages
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') if has_key(s:done_include, matchstr(s:type,'[^.]*'))
continue
endif
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*````*\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*````*\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') . s:concealends
let s:done_include[matchstr(s:type,'[^.]*')] = 1
endfor endfor
unlet! s:type unlet! s:type
unlet! s:done_include
endif endif
syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]" syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
@ -107,6 +125,12 @@ hi def link markdownH4 htmlH4
hi def link markdownH5 htmlH5 hi def link markdownH5 htmlH5
hi def link markdownH6 htmlH6 hi def link markdownH6 htmlH6
hi def link markdownHeadingRule markdownRule hi def link markdownHeadingRule markdownRule
hi def link markdownH1Delimiter markdownHeadingDelimiter
hi def link markdownH2Delimiter markdownHeadingDelimiter
hi def link markdownH3Delimiter markdownHeadingDelimiter
hi def link markdownH4Delimiter markdownHeadingDelimiter
hi def link markdownH5Delimiter markdownHeadingDelimiter
hi def link markdownH6Delimiter markdownHeadingDelimiter
hi def link markdownHeadingDelimiter Delimiter hi def link markdownHeadingDelimiter Delimiter
hi def link markdownOrderedListMarker markdownListMarker hi def link markdownOrderedListMarker markdownListMarker
hi def link markdownListMarker htmlTagName hi def link markdownListMarker htmlTagName

View File

@ -2,7 +2,7 @@
" Language: Sass " Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.sass " Filenames: *.sass
" Last Change: 2016 Aug 29 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -21,8 +21,7 @@ syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:"
syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation
syn match sassDefault "!default\>" contained syn match sassFlag "!\%(default\|global\|optional\)\>" contained
syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+"
syn match sassVariable "$[[:alnum:]_-]\+" syn match sassVariable "$[[:alnum:]_-]\+"
syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite
syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite
@ -42,7 +41,6 @@ syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName s
syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName
syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite
syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"
syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassMixinName skipwhite
syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite
@ -52,6 +50,7 @@ syn match sassEscape "^\s*\zs\\"
syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId
syn match sassId "[[:alnum:]_-]\+" contained syn match sassId "[[:alnum:]_-]\+" contained
syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass
syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassClass
syn match sassClass "[[:alnum:]_-]\+" contained syn match sassClass "[[:alnum:]_-]\+" contained
syn match sassAmpersand "&" syn match sassAmpersand "&"
@ -75,12 +74,12 @@ syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell
hi def link sassEndOfLineComment sassComment hi def link sassEndOfLineComment sassComment
hi def link sassCssComment sassComment hi def link sassCssComment sassComment
hi def link sassComment Comment hi def link sassComment Comment
hi def link sassDefault cssImportant hi def link sassFlag cssImportant
hi def link sassVariable Identifier hi def link sassVariable Identifier
hi def link sassFunction Function hi def link sassFunction Function
hi def link sassMixing PreProc hi def link sassMixing PreProc
hi def link sassMixin PreProc hi def link sassMixin PreProc
hi def link sassPlaceholder PreProc hi def link sassPlaceholder sassClassChar
hi def link sassExtend PreProc hi def link sassExtend PreProc
hi def link sassFunctionDecl PreProc hi def link sassFunctionDecl PreProc
hi def link sassReturn PreProc hi def link sassReturn PreProc

View File

@ -2,7 +2,7 @@
" Language: SCSS " Language: SCSS
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.scss " Filenames: *.scss
" Last Change: 2010 Jul 26 " Last Change: 2019 Dec 05
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -10,10 +10,15 @@ endif
runtime! syntax/sass.vim runtime! syntax/sass.vim
syn match scssComment "//.*" contains=sassTodo,@Spell syn clear sassComment
syn region scssComment start="/\*" end="\*/" contains=sassTodo,@Spell syn clear sassCssComment
syn clear sassEndOfLineComment
hi def link scssComment sassComment syn match scssComment "//.*" contains=sassTodo,@Spell
syn region scssCssComment start="/\*" end="\*/" contains=sassTodo,@Spell
hi def link scssCssComment scssComment
hi def link scssComment Comment
let b:current_syntax = "scss" let b:current_syntax = "scss"