51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import keyinput
|
|
from mode import Fundamental
|
|
from method import Method
|
|
|
|
class PipeInsertChr(Method):
|
|
_is_method = False
|
|
args = []
|
|
def __init__(self, i):
|
|
self.name = "pipe-insert-chr-%s" % i
|
|
self.help = "Insert chr(%d) into the current pipe." % i
|
|
self.string = chr(i)
|
|
def _execute(self, w, **vargs):
|
|
w.buffer.pipe_write(self.string)
|
|
|
|
class PipeInsertEsc(PipeInsertChr):
|
|
def __init__(self, i):
|
|
self.name = "pipe-insert-esc-%s" % i
|
|
self.help = "Insert ESC + chr(%d) into the current pipe." % i
|
|
self.string = chr(27) + chr(i)
|
|
|
|
class Pipe(Fundamental):
|
|
name = 'pipe'
|
|
def __init__(self, w):
|
|
Fundamental.__init__(self, w)
|
|
|
|
keys = list(self.bindings.keys())
|
|
|
|
# page-up/page-down/goto-start/goto-end, C-x and M-x should still work
|
|
for key in keys:
|
|
if key.startswith('C-x'):
|
|
continue
|
|
if key in ('M-x', 'C-v', 'M-v', 'M-<', 'M->'):
|
|
continue
|
|
del self.bindings[key]
|
|
|
|
for i in range(0, 128):
|
|
if i in (22, 24, 27):
|
|
continue
|
|
sym = keyinput.MAP.get(i, chr(i))
|
|
obj = PipeInsertChr(i)
|
|
w.application.methods[obj.name] = obj
|
|
self.add_binding(obj.name, sym)
|
|
|
|
if i not in (ord('x'), ord('v'), ord('>'), ord('<')):
|
|
sym2 = 'M-%s' % sym
|
|
obj2 = PipeInsertEsc(i)
|
|
w.application.methods[obj2.name] = obj2
|
|
self.add_binding(obj2.name, sym2)
|
|
|
|
install = Pipe.install
|