diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-07-03 16:42:19 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-07-03 16:42:19 +0200 |
commit | 6dc819b1299e1d9f99303568772ade544d5c1322 (patch) | |
tree | 0aa77a303746423f3ab424d9ee78c84c3f560a78 /runtime/indent | |
parent | 972bfddc6b3f52ae0865ad8c0bf6089bc8a9883a (diff) | |
download | vim-git-6dc819b1299e1d9f99303568772ade544d5c1322.tar.gz |
Updated runtime and language files.
Diffstat (limited to 'runtime/indent')
-rw-r--r-- | runtime/indent/sas.vim | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/runtime/indent/sas.vim b/runtime/indent/sas.vim index d591b2796..9cc9e025c 100644 --- a/runtime/indent/sas.vim +++ b/runtime/indent/sas.vim @@ -1,8 +1,8 @@ " Vim indent file " Language: SAS " Maintainer: Zhen-Huan Hu <wildkeny@gmail.com> -" Version: 3.0.1 -" Last Change: Mar 13, 2017 +" Version: 3.0.3 +" Last Change: Jun 26, 2018 if exists("b:did_indent") finish @@ -27,9 +27,9 @@ let s:section_run = '\v%(^|;)\s*run\s*;' let s:section_end = '\v%(^|;)\s*%(quit|enddata)\s*;' " Regex that captures the start of a control block (anything inside a section) -let s:block_str = '\v<%(do>%([^;]+<%(to|over)>[^;]+)=|%(define|layout|method|select)>[^;]+|begingraph)\s*;' +let s:block_str = '\v<%(do>%([^;]+<%(to|over|while)>[^;]+)=|%(compute|define\s+%(column|footer|header|style|table|tagset|crosstabs|statgraph)|edit|layout|method|select)>[^;]+|begingraph)\s*;' " Regex that captures the end of a control block (anything inside a section) -let s:block_end = '\v<%(end|endlayout|endgraph)\s*;' +let s:block_end = '\v<%(end|endcomp|endlayout|endgraph)\s*;' " Regex that captures the start of a macro let s:macro_str = '\v%(^|;)\s*\%macro>' @@ -52,7 +52,7 @@ function! s:PrevMatch(lnum, regex) let prev_lnum = prevnonblank(a:lnum - 1) while prev_lnum > 0 let prev_line = getline(prev_lnum) - if prev_line =~ a:regex + if prev_line =~? a:regex break else let prev_lnum = prevnonblank(prev_lnum - 1) @@ -71,11 +71,11 @@ function! GetSASIndent() let prev_line = getline(prev_lnum) " Previous non-blank line contains the start of a macro/section/block " while not the end of a macro/section/block (at the same line) - if (prev_line =~ s:section_str && prev_line !~ s:section_run && prev_line !~ s:section_end) || - \ (prev_line =~ s:block_str && prev_line !~ s:block_end) || - \ (prev_line =~ s:macro_str && prev_line !~ s:macro_end) - let ind = indent(prev_lnum) + &sts - elseif prev_line =~ s:section_run && prev_line !~ s:section_end + if (prev_line =~? s:section_str && prev_line !~? s:section_run && prev_line !~? s:section_end) || + \ (prev_line =~? s:block_str && prev_line !~? s:block_end) || + \ (prev_line =~? s:macro_str && prev_line !~? s:macro_end) + let ind = indent(prev_lnum) + shiftwidth() + elseif prev_line =~? s:section_run && prev_line !~? s:section_end let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str) let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), @@ -83,9 +83,9 @@ function! GetSASIndent() \ s:PrevMatch(v:lnum, s:program_end)]) " Check if the section supports run-processing if prev_section_end_lnum < prev_section_str_lnum && - \ getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' . + \ getline(prev_section_str_lnum) =~? '\v%(^|;)\s*proc\s+%(' . \ join(s:run_processing_procs, '|') . ')>' - let ind = indent(prev_lnum) + &sts + let ind = indent(prev_lnum) + shiftwidth() else let ind = indent(prev_lnum) endif @@ -95,26 +95,26 @@ function! GetSASIndent() endif " Re-adjustments based on the inputs of the current line let curr_line = getline(v:lnum) - if curr_line =~ s:program_end + if curr_line =~? s:program_end " End of the program " Same indentation as the first non-blank line return indent(nextnonblank(1)) - elseif curr_line =~ s:macro_end + elseif curr_line =~? s:macro_end " Current line is the end of a macro " Match the indentation of the start of the macro return indent(s:PrevMatch(v:lnum, s:macro_str)) - elseif curr_line =~ s:block_end && curr_line !~ s:block_str + elseif curr_line =~? s:block_end && curr_line !~? s:block_str " Re-adjust if current line is the end of a block " while not the beginning of a block (at the same line) " Returning the indent of previous block start directly " would not work due to nesting - let ind = ind - &sts - elseif curr_line =~ s:section_str || curr_line =~ s:section_run || curr_line =~ s:section_end + let ind = ind - shiftwidth() + elseif curr_line =~? s:section_str || curr_line =~? s:section_run || curr_line =~? s:section_end " Re-adjust if current line is the start/end of a section " since the end of a section could be inexplicit let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str) " Check if the previous section supports run-processing - if getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' . + if getline(prev_section_str_lnum) =~? '\v%(^|;)\s*proc\s+%(' . \ join(s:run_processing_procs, '|') . ')>' let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), @@ -128,7 +128,7 @@ function! GetSASIndent() \ s:PrevMatch(v:lnum, s:program_end)]) endif if prev_section_end_lnum < prev_section_str_lnum - let ind = ind - &sts + let ind = ind - shiftwidth() endif endif return ind |