From 868103ab0c6ef93aef58e01b9446ee24d55ef56e Mon Sep 17 00:00:00 2001 From: Will Le Date: Sat, 7 Oct 2017 05:06:33 +0700 Subject: [PATCH] Modify loclist - Separate errors from warnings (errors are shown above warnings) - [g:pymode_lint_cwindow] open loclist only if there is at least one error (not warnings) - [g:pymode_lint_cwindow] jump to first error Changes to be committed: modified: autoload/pymode/lint.vim modified: autoload/pymode/tools/loclist.vim modified: autoload/pymode/tools/signs.vim modified: pymode/rope.py --- autoload/pymode/lint.vim | 2 +- autoload/pymode/tools/loclist.vim | 32 +++++++++++++++++++++++++------ autoload/pymode/tools/signs.vim | 2 +- pymode/rope.py | 2 +- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/autoload/pymode/lint.vim b/autoload/pymode/lint.vim index e7dba8b5..3db66881 100644 --- a/autoload/pymode/lint.vim +++ b/autoload/pymode/lint.vim @@ -68,7 +68,7 @@ fun! pymode#lint#check() "{{{ call loclist.show() call pymode#lint#show_errormessage() - call pymode#wide_message('Found errors and warnings: ' . len(loclist._loclist)) + call pymode#wide_message('Found ' . loclist.num_errors() . ' error(s) and ' . loclist.num_warnings() . ' warning(s)') endfunction " }}} diff --git a/autoload/pymode/tools/loclist.vim b/autoload/pymode/tools/loclist.vim index 18b6d294..4d66add6 100644 --- a/autoload/pymode/tools/loclist.vim +++ b/autoload/pymode/tools/loclist.vim @@ -24,19 +24,37 @@ endfunction "}}} fun! g:PymodeLocList.is_empty() "{{{ - return empty(self._loclist) + return empty(self._errlist) && empty(self._warnlist) +endfunction "}}} + +fun! g:PymodeLocList.loclist() "{{{ + let loclist = copy(self._errlist) + call extend(loclist, self._warnlist) + return loclist +endfunction "}}} + +fun! g:PymodeLocList.num_errors() "{{{ + return len(self._errlist) +endfunction "}}} + +fun! g:PymodeLocList.num_warnings() "{{{ + return len(self._warnlist) endfunction "}}} fun! g:PymodeLocList.clear() "{{{ - let self._loclist = [] + let self._errlist = [] + let self._warnlist = [] let self._messages = {} let self._name = expand('%:t') endfunction "}}} fun! g:PymodeLocList.extend(raw_list) "{{{ - call extend(self._loclist, a:raw_list) + let err_list = filter(copy(a:raw_list), 'v:val["type"] == "E"') + let warn_list = filter(copy(a:raw_list), 'v:val["type"] != "E"') + call extend(self._errlist, err_list) + call extend(self._warnlist, warn_list) for issue in a:raw_list let self._messages[issue.lnum] = issue.text endfor @@ -46,7 +64,7 @@ endfunction "}}} fun! g:PymodeLocList.filter(filters) "{{{ let loclist = [] - for error in self._loclist + for error in self.loclist() let passes_filters = 1 for key in keys(a:filters) if get(error, key, '') !=? a:filters[key] @@ -65,8 +83,9 @@ endfunction "}}} fun! g:PymodeLocList.show() "{{{ - call setloclist(0, self._loclist) - if self.is_empty() + call setloclist(0, self.loclist()) + "if self.is_empty() + if self.num_errors() == 0 lclose elseif g:pymode_lint_cwindow let num = winnr() @@ -77,5 +96,6 @@ fun! g:PymodeLocList.show() "{{{ call setwinvar(winnr(), 'quickfix_title', self._title . ' <' . self._name . '>') exe num . "wincmd w" endif + lfirst end endfunction "}}} diff --git a/autoload/pymode/tools/signs.vim b/autoload/pymode/tools/signs.vim index 3487cf85..579573ed 100644 --- a/autoload/pymode/tools/signs.vim +++ b/autoload/pymode/tools/signs.vim @@ -46,7 +46,7 @@ endfunction "}}} fun! g:PymodeSigns.place(loclist) "{{{ let seen = {} - for issue in a:loclist._loclist + for issue in a:loclist.loclist() if !has_key(seen, issue.lnum) let seen[issue.lnum] = 1 call add(self._sign_ids, self._next_id) diff --git a/pymode/rope.py b/pymode/rope.py index 3a20c267..f3a8b984 100644 --- a/pymode/rope.py +++ b/pymode/rope.py @@ -184,7 +184,7 @@ def find_it(): text=env.lines[oc.lineno - 1] if oc.resource.real_path == env.curbuf.name else "", # noqa lnum=oc.lineno, )) - env.let('loclist._loclist', lst) + env.run('g:PymodeLocList.current().extend', lst) def update_python_path(paths): pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy