Add g:easy_align_indentation. Add n indentation option.

This commit is contained in:
Junegunn Choi
2013-08-16 01:38:50 +09:00
parent 90a5487974
commit 0fb997d5ab
5 changed files with 60 additions and 18 deletions

View File

@@ -85,6 +85,9 @@ Alignment rules for the following delimiters have been defined to meet the most
| `,` | Multi-line method arguments | | `,` | Multi-line method arguments |
| | | Table markdown | | | | Table markdown |
You can override these default rules or define your own rules with
`g:easy_align_delimiters`, which will be described in the later section.
#### Example command sequences #### Example command sequences
| With visual map | Description | Equivalent command | | With visual map | Description | Equivalent command |
@@ -196,7 +199,7 @@ lowest precedence.
| `stick_to_left` | boolean | 0 | Whether to position delimiter on the left-side | | `stick_to_left` | boolean | 0 | Whether to position delimiter on the left-side |
| `ignore_unmatched` | boolean | 1 | Whether to ignore lines without matching delimiter | | `ignore_unmatched` | boolean | 1 | Whether to ignore lines without matching delimiter |
| `ignores` | list | ['String', 'Comment'] | Delimiters in these syntax highlight groups are ignored | | `ignores` | list | ['String', 'Comment'] | Delimiters in these syntax highlight groups are ignored |
| `indentation` | string | `k` | Indentation method (*k*eep, *d*eep, *s*hallow) | | `indentation` | string | `k` | Indentation method (*k*eep, *d*eep, *s*hallow, *n*one) |
| `delimiter_align` | string | `r` | Determines how to align delimiters of different lengths | | `delimiter_align` | string | `r` | Determines how to align delimiters of different lengths |
Some of the options can be specified using corresponding global variables. Some of the options can be specified using corresponding global variables.
@@ -206,6 +209,7 @@ Some of the options can be specified using corresponding global variables.
| `ignore_unmatched` | `g:easy_align_ignore_unmatched` | | `ignore_unmatched` | `g:easy_align_ignore_unmatched` |
| `ignores` | `g:easy_align_ignores` | | `ignores` | `g:easy_align_ignores` |
| `delimiter_align` | `g:easy_align_delimiter_align` | | `delimiter_align` | `g:easy_align_delimiter_align` |
| `indentation` | `g:easy_align_indentation` |
### Ignoring delimiters in comments or strings ### Ignoring delimiters in comments or strings
@@ -359,35 +363,44 @@ By default :EasyAlign command keeps the original indentation of the lines. But
then again we have `indentation` option. See the following example. then again we have `indentation` option. See the following example.
```ruby ```ruby
# Lines with different indentation
apple = 1 apple = 1
banana = 2 banana = 2
cake = 3 cake = 3
daisy = 4 daisy = 4
eggplant = 5 eggplant = 5
# Default: _k_eep the original indentation # Default: _k_eep the original indentation
# :EasyAlign= # :EasyAlign=
apple = 1 apple = 1
banana = 2 banana = 2
cake = 3 cake = 3
daisy = 4 daisy = 4
eggplant = 5 eggplant = 5
# Use the _s_hallowest indentation among the lines # Use the _s_hallowest indentation among the lines
# :EasyAlign={'idt':s} # :EasyAlign={'idt':s}
apple = 1 apple = 1
banana = 2 banana = 2
cake = 3 cake = 3
daisy = 4 daisy = 4
eggplant = 5 eggplant = 5
# Use the _d_eepest indentation among the lines # Use the _d_eepest indentation among the lines
# :EasyAlign={'idt':d} # :EasyAlign={'idt':d}
apple = 1 apple = 1
banana = 2 banana = 2
cake = 3 cake = 3
daisy = 4 daisy = 4
eggplant = 5 eggplant = 5
# Indentation: _n_one
# :EasyAlign={'idt':n}
apple = 1
banana = 2
cake = 3
daisy = 4
eggplant = 5
``` ```
Notice that `idt` is fuzzy-matched to `indentation`. Notice that `idt` is fuzzy-matched to `indentation`.

View File

@@ -271,6 +271,8 @@ function! s:do_align(just, all_tokens, all_delims, fl, ll, fc, lc, pattern, nth,
let indent = repeat(' ', max_indent) let indent = repeat(' ', max_indent)
elseif a:indentation ==? 's' elseif a:indentation ==? 's'
let indent = repeat(' ', min_indent) let indent = repeat(' ', min_indent)
elseif a:indentation ==? 'n'
let indent = ''
elseif a:indentation !=? 'k' elseif a:indentation !=? 'k'
call s:exit('Invalid indentation: ' . a:indentation) call s:exit('Invalid indentation: ' . a:indentation)
end end
@@ -420,8 +422,8 @@ function! s:parse_args(args)
let cand = strpart(args, midx) let cand = strpart(args, midx)
try try
let [l, r, c, k, s, d] = ['l', 'r', 'c', 'k', 's', 'd'] let [l, r, c, k, s, d, n] = ['l', 'r', 'c', 'k', 's', 'd', 'n']
let [L, R, C, K, S, D] = ['l', 'r', 'c', 'k', 's', 'd'] let [L, R, C, K, S, D, N] = ['l', 'r', 'c', 'k', 's', 'd', 'n']
let o = eval(cand) let o = eval(cand)
if type(o) == 4 if type(o) == 4
let option = o let option = o
@@ -546,7 +548,7 @@ function! easy_align#align(just, expr) range
\ ml, \ ml,
\ mr, \ mr,
\ get(dict, 'delimiter_align', get(g:, 'easy_align_delimiter_align', 'r')), \ get(dict, 'delimiter_align', get(g:, 'easy_align_delimiter_align', 'r')),
\ get(dict, 'indentation', 'k'), \ get(dict, 'indentation', get(g:, 'easy_align_indentation', 'k')),
\ get(dict, 'stick_to_left', 0), \ get(dict, 'stick_to_left', 0),
\ get(dict, 'ignore_unmatched', get(g:, 'easy_align_ignore_unmatched', 1)), \ get(dict, 'ignore_unmatched', get(g:, 'easy_align_ignore_unmatched', 1)),
\ get(dict, 'ignores', s:ignored_syntax()), \ get(dict, 'ignores', s:ignored_syntax()),

View File

@@ -269,12 +269,13 @@ And on ':EasyAlign={'da':c}', center-aligned.
cake ||= banana cake ||= banana
Adjusting indentation Adjusting indentation *g:easy_align_indentation*
------------------------------------------------------------------------- -------------------------------------------------------------------------
By default :EasyAlign command keeps the original indentation of the lines. By default :EasyAlign command keeps the original indentation of the lines.
But then again we have 'indentation' option. See the following example. But then again we have 'indentation' option. See the following example.
# Lines with different indentation
apple = 1 apple = 1
banana = 2 banana = 2
cake = 3 cake = 3
@@ -305,6 +306,14 @@ But then again we have 'indentation' option. See the following example.
daisy = 4 daisy = 4
eggplant = 5 eggplant = 5
# Indentation: _n_one
# :EasyAlign={'idt':n}
apple = 1
banana = 2
cake = 3
daisy = 4
eggplant = 5
Notice that 'idt' is fuzzy-matched to 'indentation'. Notice that 'idt' is fuzzy-matched to 'indentation'.

View File

@@ -510,6 +510,24 @@ George Harrison 1943
daisy = 4 = 2 daisy = 4 = 2
eggplant = 5 = 2 eggplant = 5 = 2
apple = 1 = 2
banana = 2 = 2
cake = 3 = 2
daisy = 4 = 2
eggplant = 5 = 2
apple = 1 = 2
banana = 2 = 2
cake = 3 = 2
daisy = 4 = 2
eggplant = 5 = 2
apple = 1 = 2
banana = 2 = 2
cake = 3 = 2
daisy = 4 = 2
eggplant = 5 = 2
apple = 1 = 2 apple = 1 = 2
banana = 2 = 2 banana = 2 = 2
cake = 3 = 2 cake = 3 = 2

View File

@@ -1 +1 @@
4Gvipjyvip 4Gvipjyvip