Workaround for E706

- Avoid E706 error
- Fix not to skip comment/string lines when ignore_unmatched is 0
This commit is contained in:
Junegunn Choi
2013-08-06 00:42:08 +09:00
parent c66f35ad39
commit 1cf343a271
5 changed files with 52 additions and 6 deletions

View File

@@ -242,7 +242,7 @@ So, let's define a custom mapping for `#`.
if !exists('g:easy_align_delimiters')
let g:easy_align_delimiters = {}
endif
let g:easy_align_delimiters['#'] = { 'pattern': '#\+', 'ignores': ['String'] } }
let g:easy_align_delimiters['#'] = { 'pattern': '#', 'ignores': ['String'] } }
```
Notice that the rule overrides `ignores` attribute in order *not to ignore*
@@ -252,7 +252,37 @@ Then on `<Enter>#`, we get
```ruby
apple = 1 # comment not aligned
apricot = 'A#B'
apricot = 'DAD' + 'F#AD'
banana = 'string' # comment 2
```
If you don't want to define a rule, you can do the same with the following
command:
```vim
" Using regular expression /#/
" - "is" is fuzzy-matched to "*i*gnore*s*"
:EasyAlign/#/{'is':['String']}
```
In this case, the second line is ignored as it doesn't contain `#`. (The one
highlighted as String is ignored.) If you don't want the second line to be
ignored, set `g:easy_align_ignore_unmatched` to 0, or use the following
commands:
```vim
" Using predefined rule with delimiter key #
:EasyAlign#{'iu':0}`
" Using regular expression /#/
:EasyAlign/#/{'is':['String'],'iu':0}`
```
Then we get,
```ruby
apple = 1 # comment not aligned
apricot = 'DAD' + 'F#AD'
banana = 'string' # comment 2
```

View File

@@ -116,21 +116,25 @@ endfunction
function! s:normalize_options(opts)
let ret = {}
for [k, v] in items(a:opts)
for k in keys(a:opts)
let v = a:opts[k]
let k = s:fuzzy_lu(k)
" Backward-compatibility
if k == 'margin_left' | let k = 'left_margin' | endif
if k == 'margin_right' | let k = 'right_margin' | endif
let ret[k] = v
unlet v
endfor
return s:validate_options(ret)
endfunction
function! s:validate_options(opts)
for [k, v] in items(a:opts)
for k in keys(a:opts)
let v = a:opts[k]
if index(s:known_options[k], type(v)) == -1
call s:exit("Invalid type for option: ". k)
endif
unlet v
endfor
return a:opts
endfunction
@@ -175,7 +179,7 @@ function! s:do_align(just, all_tokens, fl, ll, fc, lc, pattern, nth, ml, mr, sti
endif
" Skip comment line
if concat && len(tokens) == 1
if concat && len(tokens) == 1 && a:ignore_unmatched
let tokens = []
endif

View File

@@ -85,3 +85,9 @@ data;;exchange: ;format
apple;: banana::cake
data;;exchange: ;format
```ruby
apple = 1 # comment not aligned
apricot = 'DAD' + 'F#AD'
banana = 'Gros Michel' # comment 2
```

View File

@@ -4,3 +4,9 @@
apple;:banana::cake
data;;exchange:;format
```ruby
apple = 1 # comment not aligned
apricot = 'DAD' + 'F#AD'
banana = 'Gros Michel' # comment 2
```

View File

@@ -1 +1 @@
4Gvipjyvip:EasyAlign:
4Gvipjyvip:EasyAlign: