mirror of
				https://github.com/amix/vimrc
				synced 2025-10-30 05:23:34 +08:00 
			
		
		
		
	Updated plugins and added vim-markdown
This commit is contained in:
		
							
								
								
									
										75
									
								
								sources_non_forked/vim-markdown/indent/markdown.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								sources_non_forked/vim-markdown/indent/markdown.vim
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| if exists("b:did_indent") | finish | endif | ||||
| let b:did_indent = 1 | ||||
|  | ||||
| setlocal indentexpr=GetMarkdownIndent() | ||||
| setlocal nolisp | ||||
| setlocal autoindent | ||||
|  | ||||
| " Automatically insert bullets | ||||
| setlocal formatoptions+=r | ||||
| " Do not automatically insert bullets when auto-wrapping with text-width | ||||
| setlocal formatoptions-=c | ||||
| " Accept various markers as bullets | ||||
| setlocal comments=b:*,b:+,b:- | ||||
|  | ||||
| " Automatically continue blockquote on line break | ||||
| setlocal comments+=b:> | ||||
|  | ||||
| " Only define the function once | ||||
| if exists("*GetMarkdownIndent") | finish | endif | ||||
|  | ||||
| function! s:IsMkdCode(lnum) | ||||
|     let name = synIDattr(synID(a:lnum, 1, 0), 'name') | ||||
|     return (name =~ '^mkd\%(Code$\|Snippet\)' || name != '' && name !~ '^\%(mkd\|html\)') | ||||
| endfunction | ||||
|  | ||||
| function! s:IsLiStart(line) | ||||
|     return a:line !~ '^ *\([*-]\)\%( *\1\)\{2}\%( \|\1\)*$' && | ||||
|       \    a:line =~ '^\s*[*+-] \+' | ||||
| endfunction | ||||
|  | ||||
| function! s:IsHeaderLine(line) | ||||
|     return a:line =~ '^\s*#' | ||||
| endfunction | ||||
|  | ||||
| function! s:IsBlankLine(line) | ||||
|     return a:line =~ '^$' | ||||
| endfunction | ||||
|  | ||||
| function! s:PrevNonBlank(lnum) | ||||
|     let i = a:lnum | ||||
|     while i > 1 && s:IsBlankLine(getline(i)) | ||||
|         let i -= 1 | ||||
|     endwhile | ||||
|     return i | ||||
| endfunction | ||||
|  | ||||
| function GetMarkdownIndent() | ||||
|     if v:lnum > 2 && s:IsBlankLine(getline(v:lnum - 1)) && s:IsBlankLine(getline(v:lnum - 2)) | ||||
|         return 0 | ||||
|     endif | ||||
|     let list_ind = get(g:, "vim_markdown_new_list_item_indent", 4) | ||||
|     " Find a non-blank line above the current line. | ||||
|     let lnum = s:PrevNonBlank(v:lnum - 1) | ||||
|     " At the start of the file use zero indent. | ||||
|     if lnum == 0 | return 0 | endif | ||||
|     let ind = indent(lnum) | ||||
|     let line = getline(lnum)    " Last line | ||||
|     let cline = getline(v:lnum) " Current line | ||||
|     if s:IsLiStart(cline) | ||||
|         " Current line is the first line of a list item, do not change indent | ||||
|         return indent(v:lnum) | ||||
|     elseif s:IsHeaderLine(cline) && !s:IsMkdCode(v:lnum) | ||||
|         " Current line is the header, do not indent | ||||
|         return 0 | ||||
|     elseif s:IsLiStart(line) | ||||
|         if s:IsMkdCode(lnum) | ||||
|             return ind | ||||
|         else | ||||
|             " Last line is the first line of a list item, increase indent | ||||
|             return ind + list_ind | ||||
|         end | ||||
|     else | ||||
|         return ind | ||||
|     endif | ||||
| endfunction | ||||
		Reference in New Issue
	
	Block a user
	 Amir Salihefendic
					Amir Salihefendic