Skip to content

Commit 280f30c

Browse files
authored
Merge pull request #122 from blueyed/pep8
Make vimlparser.py (much more) PEP8 compliant
2 parents 9cde691 + 398e880 commit 280f30c

File tree

8 files changed

+424
-276
lines changed

8 files changed

+424
-276
lines changed

.flake8

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[flake8]
2+
per-file-ignores =
3+
# undefined names for StringReader, VimLParser, Compiler
4+
py/vimlfunc.py:F821
5+
py/vimlparser.py:E501

.travis.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ jobs:
2323
- name: Installed Vim with checks
2424
env:
2525
- VIM_VERSION=installed
26-
- MAKE_TARGET="clean_compiled check js/test py/test test/node_position/test_position.out"
26+
- MAKE_TARGET="clean_compiled check checkpy js/test py/test test/node_position/test_position.out"
2727
- TEST_PROFILE=vim-profile-installed.txt
2828

2929
install:
3030
- |
31-
if [ "$VIM_VERSION" != 'installed' ]; then
31+
if [ "$VIM_VERSION" = 'installed' ]; then
32+
pip install --user flake8
33+
else
3234
bash scripts/install-vim.sh
3335
export PATH=$HOME/vim/bin:$PATH
3436
fi

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ check: all
1616
echo 'Compiled files were updated, but should have been included/committed.'; \
1717
exit 1; }
1818

19+
checkpy: all
20+
flake8 py
21+
1922
test:
2023
test/run.sh
2124

autoload/vimlparser.vim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ function! s:VimLParser.parse_command_modifiers()
563563
call add(modifiers, {'name': 'keepjumps'})
564564
elseif stridx('keeppatterns', k) == 0 && len(k) >= 5 " keepp\%[atterns]
565565
call add(modifiers, {'name': 'keeppatterns'})
566-
elseif stridx('hide', k) == 0 && len(k) >= 3 "hid\%[e]
566+
elseif stridx('hide', k) == 0 && len(k) >= 3 " hid\%[e]
567567
if self.ends_excmds(c)
568568
break
569569
endif
@@ -576,7 +576,7 @@ function! s:VimLParser.parse_command_modifiers()
576576
call add(modifiers, {'name': 'noautocmd'})
577577
elseif stridx('noswapfile', k) == 0 && len(k) >= 3 " :nos\%[wapfile]
578578
call add(modifiers, {'name': 'noswapfile'})
579-
elseif stridx('rightbelow', k) == 0 && len(k) >= 6 "rightb\%[elow]
579+
elseif stridx('rightbelow', k) == 0 && len(k) >= 6 " rightb\%[elow]
580580
call add(modifiers, {'name': 'rightbelow'})
581581
elseif stridx('sandbox', k) == 0 && len(k) >= 3 " san\%[dbox]
582582
call add(modifiers, {'name': 'sandbox'})

js/vimlparser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ VimLParser.prototype.parse_command_modifiers = function() {
755755
viml_add(modifiers, {"name":"keeppatterns"});
756756
}
757757
else if (viml_stridx("hide", k) == 0 && viml_len(k) >= 3) {
758-
//hid\%[e]
758+
// hid\%[e]
759759
if (this.ends_excmds(c)) {
760760
break;
761761
}
@@ -778,7 +778,7 @@ VimLParser.prototype.parse_command_modifiers = function() {
778778
viml_add(modifiers, {"name":"noswapfile"});
779779
}
780780
else if (viml_stridx("rightbelow", k) == 0 && viml_len(k) >= 6) {
781-
//rightb\%[elow]
781+
// rightb\%[elow]
782782
viml_add(modifiers, {"name":"rightbelow"});
783783
}
784784
else if (viml_stridx("sandbox", k) == 0 && viml_len(k) >= 3) {

py/pycompiler.vim

Lines changed: 59 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ endfunction
106106
function s:PythonCompiler.__init__()
107107
let self.indent = ['']
108108
let self.lines = []
109+
let self.in_class = 0
109110
endfunction
110111

111112
function s:PythonCompiler.out(...)
@@ -324,31 +325,66 @@ function s:PythonCompiler.compile_excmd(node)
324325
throw 'NotImplemented: excmd'
325326
endfunction
326327

328+
function s:PythonCompiler.insert_empty_lines_before_comment(count)
329+
" Find start of preceding comment (block).
330+
let comment_start = 0
331+
let len_lines = len(self.lines)
332+
if len_lines
333+
while 1
334+
let line = get(self.lines, comment_start - 1, '')
335+
if line !~# '^\s*#'
336+
break
337+
endif
338+
let comment_start -= 1
339+
" Adjust indentation to current level.
340+
let self.lines[comment_start] = substitute(line, '^\s\+', self.indent[0], '')
341+
endwhile
342+
343+
if comment_start != 0
344+
let comment_start = len_lines + comment_start
345+
endif
346+
endif
347+
348+
if comment_start
349+
for c in range(a:count)
350+
call insert(self.lines, '', comment_start)
351+
endfor
352+
else
353+
for c in range(a:count)
354+
call self.emptyline()
355+
endfor
356+
endif
357+
endfunction
358+
327359
function s:PythonCompiler.compile_function(node)
328360
let left = self.compile(a:node.left)
329361
let rlist = map(a:node.rlist, 'self.compile(v:val)')
330362
if !empty(rlist) && rlist[-1] == '...'
331363
let rlist[-1] = '*a000'
332364
endif
365+
333366
if left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
334367
let left = matchstr(left, '\.\zs.*')
335368
if left == 'new'
336369
return
337370
endif
371+
call self.insert_empty_lines_before_comment(1)
338372
call insert(rlist, 'self')
339-
call self.incindent(' ')
340373
call self.out('def %s(%s):', left, join(rlist, ', '))
341374
call self.incindent(' ')
342375
call self.compile_body(a:node.body)
343376
call self.decindent()
344-
call self.decindent()
345377
else
378+
if self.in_class
379+
let self.in_class = 0
380+
call self.decindent()
381+
endif
382+
call self.insert_empty_lines_before_comment(2)
346383
call self.out('def %s(%s):', left, join(rlist, ', '))
347384
call self.incindent(' ')
348385
call self.compile_body(a:node.body)
349386
call self.decindent()
350387
endif
351-
call self.emptyline()
352388
endfunction
353389

354390
function s:PythonCompiler.compile_delfunction(node)
@@ -375,20 +411,26 @@ function s:PythonCompiler.compile_let(node)
375411
let right = self.compile(a:node.right)
376412
if a:node.left isnot s:NIL
377413
let left = self.compile(a:node.left)
378-
if left == 'LvalueParser'
379-
call self.out('class LvalueParser(ExprParser):')
380-
return
381-
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
382-
call self.out('class %s:', left)
383-
return
384-
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
414+
if left ==# 'LvalueParser'
415+
let class_def = 'LvalueParser(ExprParser)'
416+
elseif left =~# '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
417+
let class_def = left
418+
elseif left =~# '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
385419
let left = matchstr(left, '\.\zs.*')
386-
call self.incindent(' ')
387420
call self.out('%s %s %s', left, op, right)
388-
call self.decindent()
421+
return
422+
else
423+
call self.out('%s %s %s', left, op, right)
389424
return
390425
endif
391-
call self.out('%s %s %s', left, op, right)
426+
427+
if self.in_class
428+
call self.decindent()
429+
endif
430+
call self.insert_empty_lines_before_comment(2)
431+
call self.out('class %s:', class_def)
432+
let self.in_class = 1
433+
call self.incindent(' ')
392434
else
393435
let list = map(a:node.list, 'self.compile(v:val)')
394436
if a:node.rest isnot s:NIL
@@ -763,7 +805,7 @@ function s:PythonCompiler.compile_list(node)
763805
endfunction
764806

765807
function s:PythonCompiler.compile_dict(node)
766-
let value = map(a:node.value, 'self.compile(v:val[0]) . ":" . self.compile(v:val[1])')
808+
let value = map(a:node.value, 'self.compile(v:val[0]) . ": " . self.compile(v:val[1])')
767809
if empty(value)
768810
return 'AttributeDict({})'
769811
else
@@ -828,14 +870,16 @@ let s:viml_builtin_functions = map(copy(s:VimLParser.builtin_functions), 'v:val.
828870
let s:script_dir = expand('<sfile>:h')
829871
function! s:convert(in, out)
830872
let vimlfunc = fnamemodify(s:script_dir . '/vimlfunc.py', ':p')
831-
let head = readfile(vimlfunc)
873+
let head = readfile(vimlfunc) + ['', '']
832874
try
833875
let r = s:StringReader.new(readfile(a:in))
834876
let p = s:VimLParser.new()
835877
let c = s:PythonCompiler.new()
836878
let lines = c.compile(p.parse(r))
837879
unlet lines[0 : index(lines, 'NIL = []') - 1]
838880
let tail = [
881+
\ '',
882+
\ '',
839883
\ 'if __name__ == ''__main__'':',
840884
\ ' main()',
841885
\ ]

0 commit comments

Comments
 (0)