parent
7c3b05dcc8
commit
c958253e34
|
@ -17,6 +17,10 @@ class ShowMode(Method):
|
||||||
|
|
||||||
lines = ['%s mode' % m.name, '']
|
lines = ['%s mode' % m.name, '']
|
||||||
|
|
||||||
|
if hasattr(m, 'description'):
|
||||||
|
lines.append('Description:')
|
||||||
|
lines.extend(m.description.split('\n'))
|
||||||
|
|
||||||
seen = set()
|
seen = set()
|
||||||
triples = []
|
triples = []
|
||||||
l1, l2 = 0, 0
|
l1, l2 = 0, 0
|
||||||
|
@ -36,14 +40,14 @@ class ShowMode(Method):
|
||||||
triples.append([name, '', a.methods[name].help])
|
triples.append([name, '', a.methods[name].help])
|
||||||
|
|
||||||
last = None
|
last = None
|
||||||
lines.append('Key Bindings:')
|
lines.extend(('Key Bindings:', ''))
|
||||||
for triple in sorted(triples):
|
for triple in sorted(triples):
|
||||||
name, keys, _help = triple
|
name, keys, _help = triple
|
||||||
if name == last:
|
if name == last:
|
||||||
name = ''
|
name = ''
|
||||||
else:
|
else:
|
||||||
last = name
|
last = name
|
||||||
lines.append(' %-*s %-*s %s' % (l1, name, l2, keys, _help))
|
lines.append(' %-*s %-*s %s' % (l1, name, l2, keys, _help))
|
||||||
lines.append('')
|
lines.append('')
|
||||||
|
|
||||||
data = '\n'.join(lines)
|
data = '\n'.join(lines)
|
||||||
|
|
|
@ -7,12 +7,6 @@ from parse import Any, And, Or, Optional, Name, Match, Matchs
|
||||||
from method import Method, arg
|
from method import Method, arg
|
||||||
from method.shell import Exec
|
from method.shell import Exec
|
||||||
|
|
||||||
try:
|
|
||||||
import bike
|
|
||||||
has_bike = True
|
|
||||||
except ImportError:
|
|
||||||
has_bike = False
|
|
||||||
|
|
||||||
class StringGrammar1(Grammar):
|
class StringGrammar1(Grammar):
|
||||||
rules = [
|
rules = [
|
||||||
PatternRule(r'octal', r'\\[0-7]{3}'),
|
PatternRule(r'octal', r'\\[0-7]{3}'),
|
||||||
|
@ -309,8 +303,8 @@ class PythonHelp(Exec):
|
||||||
args = [arg('name', t="string", p="Name: ", h='name to get help on')]
|
args = [arg('name', t="string", p="Name: ", h='name to get help on')]
|
||||||
def _execute(self, w, **vargs):
|
def _execute(self, w, **vargs):
|
||||||
name = vargs['name']
|
name = vargs['name']
|
||||||
stmt = '"try:\n import %s\nexcept:\n pass\nhelp(%s)"' % (name, name)
|
stmt = 'try:\n import %s\nexcept:\n pass\nhelp(%s)' % (name, name)
|
||||||
self._doit(w, None, 'python -c %s' % stmt)
|
self._doit(w, None, 'python -c "%s"' % stmt)
|
||||||
|
|
||||||
class PythonInsertTripleSquotes(method.Method):
|
class PythonInsertTripleSquotes(method.Method):
|
||||||
'''Insert a triple-quoted string using single-quotes'''
|
'''Insert a triple-quoted string using single-quotes'''
|
||||||
|
@ -392,27 +386,38 @@ class PythonBrmFindReferences(method.Method):
|
||||||
if w.mode.brm is None:
|
if w.mode.brm is None:
|
||||||
w.set_error('bicycle repairman not installed')
|
w.set_error('bicycle repairman not installed')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
base = os.getcwd()
|
||||||
path = w.buffer.path
|
path = w.buffer.path
|
||||||
cursor = w.logical_cursor()
|
cursor = w.logical_cursor()
|
||||||
y, x = cursor.yx()
|
line, col = cursor.y + 1, cursor.x + 1
|
||||||
refs = w.mode.brm.findReferencesByCoordinates(path, y, x)
|
refs = w.mode.brm.findReferencesByCoordinates(path, line, col)
|
||||||
lines = []
|
|
||||||
n = 0
|
l, count, tokens = 0, 0, []
|
||||||
|
if not base.endswith('/'): base += '/'
|
||||||
|
|
||||||
for r in refs:
|
for r in refs:
|
||||||
f, n, c = r.filename, r.lineno, r.confidence
|
f, n, c = r.filename, r.lineno, r.confidence
|
||||||
s = '%s:%d: %3d%% confidence' % (f, n, c)
|
f = f.replace(base, '')
|
||||||
lines.append(s)
|
label = '%s:%d:' % (f, n)
|
||||||
n += 1
|
l = max(len(label), l)
|
||||||
|
tokens.append((label, c))
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
for tpl in tokens:
|
||||||
|
lines.append('%-*s %3d%% confidence' % (l, tpl[0], tpl[1]))
|
||||||
|
|
||||||
if n == 0:
|
if n == 0:
|
||||||
w.set_error('no references found')
|
w.set_error('no references found')
|
||||||
return
|
return
|
||||||
|
|
||||||
data = '\n'.join(lines)
|
data = '\n'.join(lines)
|
||||||
w.application.data_buffer("*References*", data, switch_to=True)
|
w.application.data_buffer("*References*", data, switch_to=True)
|
||||||
if n == 1:
|
if count == 1:
|
||||||
w.set_error('1 reference found')
|
w.set_error('1 reference found')
|
||||||
else:
|
else:
|
||||||
w.set_error('%d references found' % n)
|
w.set_error('%d references found' % count)
|
||||||
|
|
||||||
class PythonNameCompleter(completer.Completer):
|
class PythonNameCompleter(completer.Completer):
|
||||||
def _get_dict(self, w):
|
def _get_dict(self, w):
|
||||||
|
@ -488,13 +493,9 @@ class PythonContext(context.Context):
|
||||||
tokens = highlights.tokens[i]
|
tokens = highlights.tokens[i]
|
||||||
g = highlights.tokens[i]
|
g = highlights.tokens[i]
|
||||||
if self.empty_match.match(tokens):
|
if self.empty_match.match(tokens):
|
||||||
#if (len(g) == 1 and g[0].name == 'eol' or
|
|
||||||
# len(g) == 2 and g[0].name == 'spaces' and g[1].name == 'eol'):
|
|
||||||
if last is None:
|
if last is None:
|
||||||
last = i
|
last = i
|
||||||
i += 1
|
i += 1
|
||||||
#if i == y2 and y2 < blen:
|
|
||||||
# y2 += 1
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if g[0].name == 'spaces':
|
if g[0].name == 'spaces':
|
||||||
|
@ -541,6 +542,14 @@ class PythonContext(context.Context):
|
||||||
self.namelines[k] = (curr, None)
|
self.namelines[k] = (curr, None)
|
||||||
|
|
||||||
class Python(mode.Fundamental):
|
class Python(mode.Fundamental):
|
||||||
|
description = '''
|
||||||
|
This programming mode is designed to edit Python source files. It
|
||||||
|
features parenthesis matching, syntax highlighting, indentation
|
||||||
|
assistance and syntax checking. It can also find classes and functions
|
||||||
|
by name, provide scope context in the status bar, and has an optional
|
||||||
|
context header. Finally, it can semantically complete tokens and
|
||||||
|
provide help output via the python interpreter.
|
||||||
|
'''
|
||||||
name = 'Python'
|
name = 'Python'
|
||||||
extensions = ['.py']
|
extensions = ['.py']
|
||||||
detection = ['python']
|
detection = ['python']
|
||||||
|
@ -643,9 +652,14 @@ class Python(mode.Fundamental):
|
||||||
self.context = PythonContext(self)
|
self.context = PythonContext(self)
|
||||||
|
|
||||||
# bicycle repairman!
|
# bicycle repairman!
|
||||||
if has_bike:
|
try:
|
||||||
|
import bike
|
||||||
self.brm = bike.init()
|
self.brm = bike.init()
|
||||||
else:
|
# turn off brm's annoying STDERR printing
|
||||||
|
f = open('/dev/null', 'w')
|
||||||
|
self.brm.setProgressLogger(f)
|
||||||
|
self.brm.setWarningLogger(f)
|
||||||
|
except ImportError:
|
||||||
self.brm = None
|
self.brm = None
|
||||||
|
|
||||||
install = Python.install
|
install = Python.install
|
||||||
|
|
Loading…
Reference in New Issue