Add a function for fixing the alignment of Vim help tags

This commit is contained in:
w0rp 2017-07-03 16:51:34 +01:00
parent fd6f05c9ea
commit 160b9548ee
3 changed files with 48 additions and 0 deletions

View File

@ -7,6 +7,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['python'], \ 'suggested_filetypes': ['python'],
\ 'description': 'Add blank lines before control statements.', \ 'description': 'Add blank lines before control statements.',
\ }, \ },
\ 'align_help_tags': {
\ 'function': 'ale#fixers#help#AlignTags',
\ 'suggested_filetypes': ['help'],
\ 'description': 'Align help tags to the right margin',
\ },
\ 'autopep8': { \ 'autopep8': {
\ 'function': 'ale#fixers#autopep8#Fix', \ 'function': 'ale#fixers#autopep8#Fix',
\ 'suggested_filetypes': ['python'], \ 'suggested_filetypes': ['python'],

View File

@ -0,0 +1,24 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: Generic fixer functions for Vim help documents.
function! ale#fixers#help#AlignTags(buffer, lines) abort
let l:new_lines = []
for l:line in a:lines
if len(l:line) != 79
let l:match = matchlist(l:line, '\v +(\*[^*]+\*)$')
if !empty(l:match)
let l:start = l:line[:-len(l:match[0]) - 1]
let l:tag = l:match[1]
let l:spaces = repeat(' ', 79 - len(l:start) - len(l:tag))
let l:line = l:start . l:spaces . l:tag
endif
endif
call add(l:new_lines, l:line)
endfor
return l:new_lines
endfunction

View File

@ -0,0 +1,19 @@
Before:
Save g:ale_fixers
After:
Restore
Given help(A vim help file with badly aligned tags):
foo *foo*
bar *bar*
baz *bar*
Execute(Tags should be aligned at the right margin):
let g:ale_fixers = {'help': ['align_help_tags']}
ALEFix
Expect help(Tags should be aligned):
foo *foo*
bar *bar*
baz *bar*