Skip to content

Make vimlparser.py (much more) PEP8 compliant #122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Aug 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[flake8]
per-file-ignores =
# undefined names for StringReader, VimLParser, Compiler
py/vimlfunc.py:F821
py/vimlparser.py:E501
6 changes: 4 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@ jobs:
- name: Installed Vim with checks
env:
- VIM_VERSION=installed
- MAKE_TARGET="clean_compiled check js/test py/test test/node_position/test_position.out"
- MAKE_TARGET="clean_compiled check checkpy js/test py/test test/node_position/test_position.out"
- TEST_PROFILE=vim-profile-installed.txt

install:
- |
if [ "$VIM_VERSION" != 'installed' ]; then
if [ "$VIM_VERSION" = 'installed' ]; then
pip install --user flake8
else
bash scripts/install-vim.sh
export PATH=$HOME/vim/bin:$PATH
fi
Expand Down
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ check: all
echo 'Compiled files were updated, but should have been included/committed.'; \
exit 1; }

checkpy: all
flake8 py

test:
test/run.sh

Expand Down
4 changes: 2 additions & 2 deletions autoload/vimlparser.vim
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ function! s:VimLParser.parse_command_modifiers()
call add(modifiers, {'name': 'keepjumps'})
elseif stridx('keeppatterns', k) == 0 && len(k) >= 5 " keepp\%[atterns]
call add(modifiers, {'name': 'keeppatterns'})
elseif stridx('hide', k) == 0 && len(k) >= 3 "hid\%[e]
elseif stridx('hide', k) == 0 && len(k) >= 3 " hid\%[e]
if self.ends_excmds(c)
break
endif
Expand All @@ -576,7 +576,7 @@ function! s:VimLParser.parse_command_modifiers()
call add(modifiers, {'name': 'noautocmd'})
elseif stridx('noswapfile', k) == 0 && len(k) >= 3 " :nos\%[wapfile]
call add(modifiers, {'name': 'noswapfile'})
elseif stridx('rightbelow', k) == 0 && len(k) >= 6 "rightb\%[elow]
elseif stridx('rightbelow', k) == 0 && len(k) >= 6 " rightb\%[elow]
call add(modifiers, {'name': 'rightbelow'})
elseif stridx('sandbox', k) == 0 && len(k) >= 3 " san\%[dbox]
call add(modifiers, {'name': 'sandbox'})
Expand Down
4 changes: 2 additions & 2 deletions js/vimlparser.js
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@ VimLParser.prototype.parse_command_modifiers = function() {
viml_add(modifiers, {"name":"keeppatterns"});
}
else if (viml_stridx("hide", k) == 0 && viml_len(k) >= 3) {
//hid\%[e]
// hid\%[e]
if (this.ends_excmds(c)) {
break;
}
Expand All @@ -778,7 +778,7 @@ VimLParser.prototype.parse_command_modifiers = function() {
viml_add(modifiers, {"name":"noswapfile"});
}
else if (viml_stridx("rightbelow", k) == 0 && viml_len(k) >= 6) {
//rightb\%[elow]
// rightb\%[elow]
viml_add(modifiers, {"name":"rightbelow"});
}
else if (viml_stridx("sandbox", k) == 0 && viml_len(k) >= 3) {
Expand Down
74 changes: 59 additions & 15 deletions py/pycompiler.vim
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ endfunction
function s:PythonCompiler.__init__()
let self.indent = ['']
let self.lines = []
let self.in_class = 0
endfunction

function s:PythonCompiler.out(...)
Expand Down Expand Up @@ -324,31 +325,66 @@ function s:PythonCompiler.compile_excmd(node)
throw 'NotImplemented: excmd'
endfunction

function s:PythonCompiler.insert_empty_lines_before_comment(count)
" Find start of preceding comment (block).
let comment_start = 0
let len_lines = len(self.lines)
if len_lines
while 1
let line = get(self.lines, comment_start - 1, '')
if line !~# '^\s*#'
break
endif
let comment_start -= 1
" Adjust indentation to current level.
let self.lines[comment_start] = substitute(line, '^\s\+', self.indent[0], '')
endwhile

if comment_start != 0
let comment_start = len_lines + comment_start
endif
endif

if comment_start
for c in range(a:count)
call insert(self.lines, '', comment_start)
endfor
else
for c in range(a:count)
call self.emptyline()
endfor
endif
endfunction

function s:PythonCompiler.compile_function(node)
let left = self.compile(a:node.left)
let rlist = map(a:node.rlist, 'self.compile(v:val)')
if !empty(rlist) && rlist[-1] == '...'
let rlist[-1] = '*a000'
endif

if left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
let left = matchstr(left, '\.\zs.*')
if left == 'new'
return
endif
call self.insert_empty_lines_before_comment(1)
call insert(rlist, 'self')
call self.incindent(' ')
call self.out('def %s(%s):', left, join(rlist, ', '))
call self.incindent(' ')
call self.compile_body(a:node.body)
call self.decindent()
call self.decindent()
else
if self.in_class
let self.in_class = 0
call self.decindent()
endif
call self.insert_empty_lines_before_comment(2)
call self.out('def %s(%s):', left, join(rlist, ', '))
call self.incindent(' ')
call self.compile_body(a:node.body)
call self.decindent()
endif
call self.emptyline()
endfunction

function s:PythonCompiler.compile_delfunction(node)
Expand All @@ -375,20 +411,26 @@ function s:PythonCompiler.compile_let(node)
let right = self.compile(a:node.right)
if a:node.left isnot s:NIL
let left = self.compile(a:node.left)
if left == 'LvalueParser'
call self.out('class LvalueParser(ExprParser):')
return
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
call self.out('class %s:', left)
return
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
if left ==# 'LvalueParser'
let class_def = 'LvalueParser(ExprParser)'
elseif left =~# '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
let class_def = left
elseif left =~# '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
let left = matchstr(left, '\.\zs.*')
call self.incindent(' ')
call self.out('%s %s %s', left, op, right)
call self.decindent()
return
else
call self.out('%s %s %s', left, op, right)
return
endif
call self.out('%s %s %s', left, op, right)

if self.in_class
call self.decindent()
endif
call self.insert_empty_lines_before_comment(2)
call self.out('class %s:', class_def)
let self.in_class = 1
call self.incindent(' ')
else
let list = map(a:node.list, 'self.compile(v:val)')
if a:node.rest isnot s:NIL
Expand Down Expand Up @@ -763,7 +805,7 @@ function s:PythonCompiler.compile_list(node)
endfunction

function s:PythonCompiler.compile_dict(node)
let value = map(a:node.value, 'self.compile(v:val[0]) . ":" . self.compile(v:val[1])')
let value = map(a:node.value, 'self.compile(v:val[0]) . ": " . self.compile(v:val[1])')
if empty(value)
return 'AttributeDict({})'
else
Expand Down Expand Up @@ -828,14 +870,16 @@ let s:viml_builtin_functions = map(copy(s:VimLParser.builtin_functions), 'v:val.
let s:script_dir = expand('<sfile>:h')
function! s:convert(in, out)
let vimlfunc = fnamemodify(s:script_dir . '/vimlfunc.py', ':p')
let head = readfile(vimlfunc)
let head = readfile(vimlfunc) + ['', '']
try
let r = s:StringReader.new(readfile(a:in))
let p = s:VimLParser.new()
let c = s:PythonCompiler.new()
let lines = c.compile(p.parse(r))
unlet lines[0 : index(lines, 'NIL = []') - 1]
let tail = [
\ '',
\ '',
\ 'if __name__ == ''__main__'':',
\ ' main()',
\ ]
Expand Down
Loading