Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7c4617a

Browse files
committed
1 parent559db22 commit7c4617a

File tree

7 files changed

+387
-232
lines changed

7 files changed

+387
-232
lines changed

‎autoload/pymode/rope.vim

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,11 @@ endfunction
5353

5454

5555
fun!pymode#rope#find_it()
56-
letl:output= []
56+
let loclist=g:PymodeLocList.current()
57+
let loclist._title="Occurrences"
5758
callpymode#wide_message('Finding Occurrences ...')
5859
PymodePython rope.find_it()
59-
callpymode#wide_message('')
60-
if!empty(l:output)
61-
let loclist=g:PymodeLocList.current()
62-
let loclist._loclist=l:output
63-
let loclist._title="Occurrences"
64-
call loclist.show()
65-
end
60+
call loclist.show()
6661
endfunction
6762

6863

‎pymode/environment.py

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
""" Define interfaces. """
2+
3+
from __future__importprint_function
4+
5+
importvim
6+
importjson
7+
importtime
8+
importos.path
9+
10+
from .utilsimportPY2
11+
12+
13+
classVimPymodeEnviroment(object):
14+
15+
""" Vim User interface. """
16+
17+
prefix='[Pymode]'
18+
19+
def__init__(self):
20+
self.current=vim.current
21+
self.options=dict(encoding=vim.eval('&enc'))
22+
self.options['debug']=self.var('g:pymode_debug',True)
23+
24+
@property
25+
defcurdir(self):
26+
""" Return current working directory. """
27+
28+
returnself.var('getcwd()')
29+
30+
@property
31+
defcurbuf(self):
32+
""" Return current buffer. """
33+
34+
returnself.current.buffer
35+
36+
@property
37+
defcursor(self):
38+
""" Return current window position.
39+
40+
:return tuple: (row, col)
41+
42+
"""
43+
returnself.current.window.cursor
44+
45+
@property
46+
defsource(self):
47+
""" Return source of current buffer. """
48+
49+
return"\n".join(self.lines)
50+
51+
@property
52+
deflines(self):
53+
""" Iterate by lines in current file.
54+
55+
:return list:
56+
57+
"""
58+
ifnotPY2:
59+
returnself.curbuf
60+
61+
return [l.decode(self.options.get('encoding'))forlinself.curbuf]
62+
63+
defvar(self,name,to_bool=False):
64+
""" Get vim variable.
65+
66+
:return vimobj:
67+
68+
"""
69+
70+
value=vim.eval(name)
71+
72+
ifto_bool:
73+
try:
74+
value=bool(int(value))
75+
exceptValueError:
76+
value=value
77+
returnvalue
78+
79+
defmessage(self,msg,history=False):
80+
""" Show message to user. """
81+
82+
ifhistory:
83+
returnvim.command('echom "%s"'%str(msg))
84+
85+
returnvim.command('call pymode#wide_message("%s")'%str(msg))
86+
87+
defuser_input(self,msg,default=''):
88+
""" Return user input or default.
89+
90+
:return str:
91+
92+
"""
93+
msg='%s %s '% (self.prefix,msg)
94+
95+
ifdefault!='':
96+
msg+='[%s] '%default
97+
98+
try:
99+
vim.command('echohl Debug')
100+
input_str=vim.eval('input("%s> ")'%msg)
101+
vim.command('echohl none')
102+
exceptKeyboardInterrupt:
103+
input_str=''
104+
105+
returninput_strordefault
106+
107+
defuser_confirm(self,msg,yes=False):
108+
""" Get user confirmation.
109+
110+
:return bool:
111+
112+
"""
113+
default='yes'ifyeselse'no'
114+
action=self.user_input(msg,default)
115+
returnactionand'yes'.startswith(action)
116+
117+
defuser_input_choices(self,msg,*options):
118+
""" Get one of many options.
119+
120+
:return str: A choosen option
121+
122+
"""
123+
choices= ['%s %s'% (self.prefix,msg)]
124+
choices+= [
125+
"%s. %s"% (num,opt)fornum,optinenumerate(options,1)]
126+
try:
127+
input_str=int(
128+
vim.eval('inputlist(%s)'%self.prepare_value(choices)))
129+
except (KeyboardInterrupt,ValueError):
130+
input_str=0
131+
132+
ifnotinput_str:
133+
self.message('Cancelled!')
134+
returnFalse
135+
136+
try:
137+
returnoptions[input_str-1]
138+
except (IndexError,ValueError):
139+
self.error('Invalid option: %s'%input_str)
140+
returnself.user_input_choices(msg,*options)
141+
142+
deferror(self,msg):
143+
""" Show error to user. """
144+
vim.command('call pymode#error("%s")'%str(msg))
145+
146+
defdebug(self,msg,*args):
147+
""" Print debug information. """
148+
149+
ifself.options.get('debug'):
150+
print("%s %s [%s]"% (
151+
int(time.time()),msg,', '.join([str(a)forainargs])))
152+
153+
defstop(self,value=None):
154+
""" Break Vim function. """
155+
156+
cmd='return'
157+
ifvalue:
158+
cmd+=' '+self.prepare_value(value)
159+
vim.command(cmd)
160+
161+
defcatch_exceptions(self,func):
162+
""" Decorator. Make execution more silence.
163+
164+
:return func:
165+
166+
"""
167+
168+
def_wrapper(*args,**kwargs):
169+
try:
170+
returnfunc(*args,**kwargs)
171+
except (Exception,vim.error)ase:# noqa
172+
ifself.options.get('debug'):
173+
raise
174+
self.error(e)
175+
returnNone
176+
return_wrapper
177+
178+
defrun(self,name,*args):
179+
""" Run vim function. """
180+
181+
vim.command('call %s(%s)'% (name,", ".join([
182+
self.prepare_value(a)forainargs
183+
])))
184+
185+
deflet(self,name,value):
186+
""" Set variable. """
187+
cmd='let %s = %s'% (name,self.prepare_value(value))
188+
self.debug(cmd)
189+
vim.command(cmd)
190+
191+
defprepare_value(self,value):
192+
""" Decode bstr to vim encoding.
193+
194+
:return unicode string:
195+
196+
"""
197+
198+
value=json.dumps(value)
199+
ifPY2:
200+
value=value.decode('utf-8').encode(self.options.get('encoding'))
201+
202+
returnvalue
203+
204+
defget_offset_params(self,cursor=None,base=""):
205+
""" Calculate current offset.
206+
207+
:return tuple: (source, offset)
208+
209+
"""
210+
row,col=cursororenv.cursor
211+
source=""
212+
offset=0
213+
fori,lineinenumerate(self.lines,1):
214+
ifi==row:
215+
source+=line[:col]+base
216+
offset=len(source)
217+
source+=line[col:]
218+
else:
219+
source+=line
220+
source+='\n'
221+
env.debug('Get offset',baseorNone,row,col,offset)
222+
returnsource,offset
223+
224+
defgoto_line(self,line):
225+
""" Go to line. """
226+
227+
vim.command('normal %sggzz'%line)
228+
229+
defgoto_file(self,path,cmd='e',force=False):
230+
""" Function description. """
231+
232+
ifforceoros.path.abspath(path)!=self.curbuf.name:
233+
self.debug('read',path)
234+
vim.command("%s %s"% (cmd,path))
235+
236+
defgoto_buffer(self,bufnr):
237+
""" Open buffer. """
238+
ifstr(bufnr)!='-1':
239+
vim.command('buffer %s'%bufnr)
240+
241+
242+
env=VimPymodeEnviroment()

‎pymode/lint.py

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
""" Pylama integration. """
22

3-
importvim# noqa
4-
from .utilsimportpymode_message,silence_stderr
3+
from .environmentimportenv
4+
from .utilsimportsilence_stderr
55

66
importos.path
77

@@ -15,31 +15,27 @@ def code_check():
1515

1616
frompylama.mainimportparse_options
1717
frompylama.tasksimportcheck_path
18-
importjson
19-
20-
b=vim.current.buffer
21-
root=vim.eval('getcwd()')
22-
linters=vim.eval('g:pymode_lint_checkers')
23-
ignore=vim.eval('g:pymode_lint_ignore')
24-
select=vim.eval('g:pymode_lint_select')
2518

2619
options=parse_options(
27-
ignore=ignore,select=select,linters=linters)
20+
ignore=env.var('g:pymode_lint_ignore'),
21+
select=env.var('g:pymode_lint_select'),
22+
linters=env.var('g:pymode_lint_checkers'),
23+
)
2824

29-
path=b.name
30-
ifroot:
31-
path=os.path.relpath(path,root)
25+
path=os.path.relpath(env.curbuf.name,env.curdir)
26+
env.debug("Start code check: ",path)
3227

3328
ifgetattr(options,'skip',None)andany(p.match(path)forpinoptions.skip):# noqa
34-
pymode_message('Skip code checking.')
35-
vim.command('return')
29+
env.message('Skip code checking.')
30+
env.debug("Skipped")
31+
env.stop()
3632
returnFalse
3733

38-
code='\n'.join(vim.current.buffer)
39-
4034
withsilence_stderr():
41-
errors=check_path(path,options=options,code=code)
42-
sort_rules=vim.eval('g:pymode_lint_sort')
35+
errors=check_path(path,options=options,code=env.source)
36+
37+
env.debug("Find errors: ",len(errors))
38+
sort_rules=env.var('g:pymode_lint_sort')
4339

4440
def__sort(e):
4541
try:
@@ -48,10 +44,10 @@ def __sort(e):
4844
return999
4945

5046
ifsort_rules:
47+
env.debug("Find sorting: ",sort_rules)
5148
errors=sorted(errors,key=__sort)
5249

5350
foreinerrors:
54-
e['bufnr']=b.number
51+
e['bufnr']=env.curbuf.number
5552

56-
vim.command(
57-
'call g:PymodeLocList.current().extend(%s)'%json.dumps(errors))
53+
env.run('g:PymodeLocList.current().extend',errors)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp