diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-02-02 21:16:29 +0100 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-02-02 21:16:29 +0100 | 
| commit | e685e4b431ab017d1aec9f9668fbeeeb6e7113e6 (patch) | |
| tree | 47137f448d461ebb6852d81c6f553d0843e33764 /autoload | |
| parent | e404a658b1647fad396a954776eda0bdabf8353c (diff) | |
| download | vim-polyglot-e685e4b431ab017d1aec9f9668fbeeeb6e7113e6.tar.gz vim-polyglot-e685e4b431ab017d1aec9f9668fbeeeb6e7113e6.zip | |
Update
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/elixir/indent.vim | 75 | ||||
| -rw-r--r-- | autoload/elixir/util.vim | 30 | ||||
| -rw-r--r-- | autoload/xml/aria.vim | 2 | ||||
| -rw-r--r-- | autoload/xml/html5.vim | 2 | 
4 files changed, 58 insertions, 51 deletions
| diff --git a/autoload/elixir/indent.vim b/autoload/elixir/indent.vim index 8e0c609c..b6df3b5d 100644 --- a/autoload/elixir/indent.vim +++ b/autoload/elixir/indent.vim @@ -3,7 +3,6 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1  let s:NO_COLON_BEFORE = ':\@<!'  let s:NO_COLON_AFTER = ':\@!'  let s:ENDING_SYMBOLS = '\]\|}\|)' -let s:STARTING_SYMBOLS = '\[\|{\|('  let s:ARROW = '->'  let s:END_WITH_ARROW = s:ARROW.'$'  let s:SKIP_SYNTAX = '\%(Comment\|String\)$' @@ -16,28 +15,31 @@ let s:MULTILINE_BLOCK = '\%(\<do\>'.s:NO_COLON_AFTER.'\|'.s:MULTILINE_FN.'\)'  let s:BLOCK_MIDDLE = '\<\%(else\|match\|elsif\|catch\|after\|rescue\)\>'  let s:BLOCK_END = 'end'  let s:STARTS_WITH_PIPELINE = '^\s*|>.*$' +let s:QUERY_FROM = '^\s*\<from\>.*\<in\>.*,'  let s:ENDING_WITH_ASSIGNMENT = '=\s*$'  let s:INDENT_KEYWORDS = s:NO_COLON_BEFORE.'\%('.s:MULTILINE_BLOCK.'\|'.s:BLOCK_MIDDLE.'\)'  let s:DEINDENT_KEYWORDS = '^\s*\<\%('.s:BLOCK_END.'\|'.s:BLOCK_MIDDLE.'\)\>'  let s:PAIR_START = '\<\%('.s:NO_COLON_BEFORE.s:BLOCK_START.'\)\>'.s:NO_COLON_AFTER  let s:PAIR_MIDDLE = '^\s*\%('.s:BLOCK_MIDDLE.'\)\>'.s:NO_COLON_AFTER.'\zs'  let s:PAIR_END = '\<\%('.s:NO_COLON_BEFORE.s:BLOCK_END.'\)\>\zs' +let s:LINE_COMMENT = '^\s*#' +let s:MATCH_OPERATOR = '[^!><=]=[^~=>]'  function! s:pending_parenthesis(line) -  if a:line.last.text !~ s:ARROW -    return elixir#util#count_indentable_symbol_diff(a:line.last, '(', '\%(end\s*\)\@<!)') +  if a:line.last_non_blank.text !~ s:ARROW +    return elixir#util#count_indentable_symbol_diff(a:line.last_non_blank, '(', '\%(end\s*\)\@<!)')    end  endfunction  function! s:pending_square_brackets(line) -  if a:line.last.text !~ s:ARROW -    return elixir#util#count_indentable_symbol_diff(a:line.last, '[', ']') +  if a:line.last_non_blank.text !~ s:ARROW +    return elixir#util#count_indentable_symbol_diff(a:line.last_non_blank, '[', ']')    end  endfunction  function! s:pending_brackets(line) -  if a:line.last.text !~ s:ARROW -    return elixir#util#count_indentable_symbol_diff(a:line.last, '{', '}') +  if a:line.last_non_blank.text !~ s:ARROW +    return elixir#util#count_indentable_symbol_diff(a:line.last_non_blank, '{', '}')    end  endfunction @@ -93,13 +95,21 @@ function! elixir#indent#deindent_opened_symbols(ind, line)  endfunction  function! elixir#indent#indent_after_pipeline(ind, line) -  if a:line.last.text =~ s:STARTS_WITH_PIPELINE +  if exists("b:old_ind.pipeline") +        \ && elixir#util#is_blank(a:line.last.text) +        \ && a:line.current.text !~ s:STARTS_WITH_PIPELINE +    " Reset indentation in pipelines if there is a blank line between +    " pipes +    let ind = b:old_ind.pipeline +    unlet b:old_ind.pipeline +    return ind +  elseif a:line.last_non_blank.text =~ s:STARTS_WITH_PIPELINE      if empty(substitute(a:line.current.text, ' ', '', 'g'))            \ || a:line.current.text =~ s:STARTS_WITH_PIPELINE -      return indent(a:line.last.num) -    elseif a:line.last.text !~ s:INDENT_KEYWORDS +      return indent(a:line.last_non_blank.num) +    elseif a:line.last_non_blank.text !~ s:INDENT_KEYWORDS        let ind = b:old_ind.pipeline -      let b:old_ind.pipeline = 0 +      unlet b:old_ind.pipeline        return ind      end    end @@ -108,8 +118,8 @@ function! elixir#indent#indent_after_pipeline(ind, line)  endfunction  function! elixir#indent#indent_assignment(ind, line) -  if a:line.last.text =~ s:ENDING_WITH_ASSIGNMENT -    let b:old_ind.pipeline = indent(a:line.last.num) " FIXME: side effect +  if a:line.last_non_blank.text =~ s:ENDING_WITH_ASSIGNMENT +    let b:old_ind.pipeline = indent(a:line.last_non_blank.num) " FIXME: side effect      return a:ind + &sw    else      return a:ind @@ -125,7 +135,7 @@ function! elixir#indent#indent_brackets(ind, line)  endfunction  function! elixir#indent#indent_case_arrow(ind, line) -  if a:line.last.text =~ s:END_WITH_ARROW && a:line.last.text !~ '\<fn\>' +  if a:line.last_non_blank.text =~ s:END_WITH_ARROW && a:line.last_non_blank.text !~ '\<fn\>'      let b:old_ind.arrow = a:ind      return a:ind + &sw    else @@ -134,7 +144,7 @@ function! elixir#indent#indent_case_arrow(ind, line)  endfunction  function! elixir#indent#indent_ending_symbols(ind, line) -  if a:line.last.text =~ '^\s*\('.s:ENDING_SYMBOLS.'\)\s*$' +  if a:line.last_non_blank.text =~ '^\s*\('.s:ENDING_SYMBOLS.'\)\s*$'      return a:ind + &sw    else      return a:ind @@ -142,7 +152,7 @@ function! elixir#indent#indent_ending_symbols(ind, line)  endfunction  function! elixir#indent#indent_keywords(ind, line) -  if a:line.last.text =~ s:INDENT_KEYWORDS +  if a:line.last_non_blank.text =~ s:INDENT_KEYWORDS && a:line.last_non_blank.text !~ s:LINE_COMMENT      return a:ind + &sw    else      return a:ind @@ -151,10 +161,10 @@ endfunction  function! elixir#indent#indent_parenthesis(ind, line)    if s:pending_parenthesis(a:line) > 0 -        \ && a:line.last.text !~ s:DEF -        \ && a:line.last.text !~ s:END_WITH_ARROW +        \ && a:line.last_non_blank.text !~ s:DEF +        \ && a:line.last_non_blank.text !~ s:END_WITH_ARROW      let b:old_ind.symbol = a:ind -    return matchend(a:line.last.text, '(') +    return matchend(a:line.last_non_blank.text, '(')    else      return a:ind    end @@ -162,21 +172,22 @@ endfunction  function! elixir#indent#indent_pipeline_assignment(ind, line)    if a:line.current.text =~ s:STARTS_WITH_PIPELINE -        \ && a:line.last.text =~ '^[^=]\+=.\+$' -    let b:old_ind.pipeline = indent(a:line.last.num) +        \ && a:line.last_non_blank.text =~ s:MATCH_OPERATOR +    let b:old_ind.pipeline = indent(a:line.last_non_blank.num)      " if line starts with pipeline -    " and last line is an attribution +    " and last_non_blank line is an attribution      " indents pipeline in same level as attribution -    return match(a:line.last.text, '=\s*\zs[^ ]') +    let assign_pos = match(a:line.last_non_blank.text, '=\s*\zs[^ ]') +    return (elixir#util#is_indentable_at(a:line.last_non_blank.num, assign_pos) ? assign_pos : a:ind)    else      return a:ind    end  endfunction  function! elixir#indent#indent_pipeline_continuation(ind, line) -  if a:line.last.text =~ s:STARTS_WITH_PIPELINE +  if a:line.last_non_blank.text =~ s:STARTS_WITH_PIPELINE          \ && a:line.current.text =~ s:STARTS_WITH_PIPELINE -    return indent(a:line.last.num) +    return indent(a:line.last_non_blank.num)    else      return a:ind    end @@ -184,26 +195,22 @@ endfunction  function! elixir#indent#indent_square_brackets(ind, line)    if s:pending_square_brackets(a:line) > 0 -    if a:line.last.text =~ '[\s*$' +    if a:line.last_non_blank.text =~ '[\s*$'        return a:ind + &sw      else        " if start symbol is followed by a character, indent based on the        " whitespace after the symbol, otherwise use the default shiftwidth        " Avoid negative indentation index -      return matchend(a:line.last.text, '[\s*') +      return matchend(a:line.last_non_blank.text, '[\s*')      end    else      return a:ind    end  endfunction -function! elixir#indent#deindent_case_arrow(ind, line) -  if get(b:old_ind, 'arrow', 0) > 0 -        \ && (a:line.current.text =~ s:ARROW -        \ || a:line.current.text =~ s:BLOCK_END) -    let ind = b:old_ind.arrow -    let b:old_ind.arrow = 0 -    return ind +function! elixir#indent#indent_ecto_queries(ind, line) +  if a:line.last_non_blank.text =~ s:QUERY_FROM +    return a:ind + &sw    else      return a:ind    end diff --git a/autoload/elixir/util.vim b/autoload/elixir/util.vim index 3139d779..fbbd62aa 100644 --- a/autoload/elixir/util.vim +++ b/autoload/elixir/util.vim @@ -1,7 +1,6 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1  let s:SKIP_SYNTAX = '\%(Comment\|String\)$' -let s:BLOCK_SKIP = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '".s:SKIP_SYNTAX."'"  function! elixir#util#is_indentable_at(line, col)    if a:col == -1 " skip synID lookup for not found match @@ -20,31 +19,24 @@ function! elixir#util#is_indentable_at(line, col)          \ !~ s:SKIP_SYNTAX  endfunction -function! elixir#util#is_indentable_match(line, pattern) -  return elixir#util#is_indentable_at(a:line.num, match(a:line.text, a:pattern)) -endfunction -  function! elixir#util#count_indentable_symbol_diff(line, open, close) -  if elixir#util#is_indentable_match(a:line, a:open) -        \ && elixir#util#is_indentable_match(a:line, a:close) -    return -          \   s:match_count(a:line.text, a:open) -          \ - s:match_count(a:line.text, a:close) -  else -    return 0 -  end +  return +        \   s:match_count(a:line, a:open) +        \ - s:match_count(a:line, a:close)  endfunction -function! s:match_count(string, pattern) -  let size = strlen(a:string) +function! s:match_count(line, pattern) +  let size = strlen(a:line.text)    let index = 0    let counter = 0    while index < size -    let index = match(a:string, a:pattern, index) +    let index = match(a:line.text, a:pattern, index)      if index >= 0        let index += 1 -      let counter +=1 +      if elixir#util#is_indentable_at(a:line.num, index) +        let counter +=1 +      end      else        break      end @@ -53,4 +45,8 @@ function! s:match_count(string, pattern)    return counter  endfunction +function elixir#util#is_blank(string) +  return a:string =~ '^\s*$' +endfunction +  endif diff --git a/autoload/xml/aria.vim b/autoload/xml/aria.vim index 4f9b1d7a..8974526e 100644 --- a/autoload/xml/aria.vim +++ b/autoload/xml/aria.vim @@ -18,8 +18,10 @@ let default_role = {}  let widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']  let document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']  let landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search'] +let dpub_role = ['dpub-abstract', 'dpub-afterword', 'dpub-appendix', 'dpub-biblioentry', 'dpub-bibliography', 'dpub-biblioref', 'dpub-chapter', 'dpub-cover', 'dpub-epilogue', 'dpub-footnote', 'dpub-footnotes', 'dpub-foreword', 'dpub-glossary', 'dpub-glossdef', 'dpub-glossref', 'dpub-glossterm', 'dpub-index', 'dpub-locator', 'dpub-noteref', 'dpub-notice', 'dpub-pagebreak', 'dpub-pagelist', 'dpub-part', 'dpub-preface', 'dpub-prologue', 'dpub-pullquote', 'dpub-qna', 'dpub-subtitle', 'dpub-tip', 'dpub-title', 'dpub-toc']  let role = extend(widget_role, document_structure)  let role = extend(role, landmark_role) +let role = extend(role, dpub_role)  " http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_taxonomy  "let global_states_and_properties = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-controls': [], 'aria-describedby': [], 'aria-disabled': ['true', 'false'], 'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-flowto': [], 'aria-grabbed': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-labelledby': [], 'aria-live': ['off', 'polite', 'assertive'], 'aria-owns': [], 'aria-relevant': ['additions', 'removals', 'text', 'all']} diff --git a/autoload/xml/html5.vim b/autoload/xml/html5.vim index cf60cd63..12c61363 100644 --- a/autoload/xml/html5.vim +++ b/autoload/xml/html5.vim @@ -320,8 +320,10 @@ if g:html5_aria_attributes_complete == 1      let widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']      let document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']      let landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search'] +    let dpub_role = ['dpub-abstract', 'dpub-afterword', 'dpub-appendix', 'dpub-biblioentry', 'dpub-bibliography', 'dpub-biblioref', 'dpub-chapter', 'dpub-cover', 'dpub-epilogue', 'dpub-footnote', 'dpub-footnotes', 'dpub-foreword', 'dpub-glossary', 'dpub-glossdef', 'dpub-glossref', 'dpub-glossterm', 'dpub-index', 'dpub-locator', 'dpub-noteref', 'dpub-notice', 'dpub-pagebreak', 'dpub-pagelist', 'dpub-part', 'dpub-preface', 'dpub-prologue', 'dpub-pullquote', 'dpub-qna', 'dpub-subtitle', 'dpub-tip', 'dpub-title', 'dpub-toc']      let role = extend(widget_role, document_structure)      let role = extend(role, landmark_role) +    let role = extend(role, dpub_role)      let global_attributes = extend(global_attributes, {'role': role})  endif  " }}} | 
