pmacs3/mode/insertmini.py

73 lines
2.9 KiB
Python
Raw Normal View History

from mode import Fundamental
from method import Method
from lex import Grammar, PatternRule
from mode.python import PythonGrammar
2008-04-18 23:32:08 -04:00
def insert_line(w):
s = w.buffer.make_string()
w.mode.lines.append(s)
w.buffer.set_data('')
class MiniInsertTab(Method):
2008-04-18 23:32:08 -04:00
def _execute(self, w, **vargs):
w.insert_string_at_cursor(' ' * w.mode.tabwidth)
class MiniInsertLine(Method):
2008-04-18 23:32:08 -04:00
def _execute(self, w, **vargs):
insert_line(w)
class MiniInsertComplete(Method):
2008-04-18 23:32:08 -04:00
def execute(self, w, **vargs):
insert_line(w)
w.buffer.callback('\n'.join(w.mode.lines))
w.application.close_mini_buffer()
class MiniInsertCancel(Method):
2008-04-18 23:32:08 -04:00
def execute(self, w, **vargs):
w.application.close_mini_buffer()
class InsertMini(Fundamental):
name = 'InsertMini'
2008-04-18 23:32:08 -04:00
actions = [MiniInsertLine, MiniInsertComplete, MiniInsertCancel,
MiniInsertTab]
def __init__(self, w):
Fundamental.__init__(self, w)
self.bindings = {}
self.saved_input = ""
self.history = ['']
self.hindex = 0
self.lines = []
self.add_bindings('start-of-line', ('C-a', 'HOME',))
self.add_bindings('end-of-line', ('C-e', 'END',))
self.add_bindings('backward', ('C-b', 'L_ARROW',))
self.add_bindings('forward', ('C-f', 'R_ARROW',))
self.add_bindings('delete-left', ('DELETE', 'BACKSPACE',))
self.add_bindings('delete-left-word', ('M-DELETE', 'M-BACKSPACE',))
self.add_bindings('delete-right', ('C-d',))
self.add_bindings('delete-right-word', ('M-d',))
self.add_bindings('kill-region', ('C-w',))
self.add_bindings('copy-region', ('M-w',))
self.add_bindings('kill', ('C-k',))
self.add_bindings('copy', ('M-k',))
self.add_bindings('yank', ('C-y',))
self.add_bindings('pop-kill', ('M-y',))
self.add_bindings('right-word', ('M-f',))
self.add_bindings('left-word', ('M-b',))
self.add_bindings('set-mark', ('C-@',))
self.add_bindings('switch-mark', ('C-x C-x',))
self.add_bindings('undo', ('C-/', 'C-x u',))
self.add_bindings('redo', ('M-/', 'M-_', 'C-x r',))
self.add_bindings('toggle-margins', ('M-m',))
self.add_bindings('transpose-words', ('M-t',))
self.add_bindings('delete-left-whitespace', ('C-c DELETE', 'C-c BACKSPACE',))
self.add_bindings('delete-right-whitespace', ('C-c d',))
self.add_bindings('insert-space', ('SPACE',))
self.add_bindings('insert-tab', ('TAB',))
2008-04-18 23:32:08 -04:00
self.add_bindings('mini-insert-line', ('RETURN',))
self.add_bindings('mini-insert-complete', ('M-RETURN',))
2008-06-10 14:29:19 -04:00
self.add_bindings('mini-insert-cancel', ('C-]', 'C-g'))
2008-04-18 23:32:08 -04:00
self.add_bindings('mini-insert-tab', ('TAB',))
for c in string.ascii_letters + string.digits + string.punctuation:
self.add_binding('insert-string-%s' % c, c)
install = InsertMini.install