pmacs3/method/move.py

119 lines
3.6 KiB
Python
Raw Normal View History

2008-11-08 10:30:04 -05:00
import os, commands, re, tempfile
from subprocess import Popen, PIPE, STDOUT
import buffer, default, dirutil, regex, util, window
from point import Point
from method import DATATYPES, Method, Argument
class StartOfLine(Method):
'''Move the cursor to the start of the current line'''
def _execute(self, w, **vargs):
w.start_of_line()
class EndOfLine(Method):
'''Move the cursor to the end of the current line'''
def _execute(self, w, **vargs):
w.end_of_line()
class Forward(Method):
'''Move the cursor right one character'''
def _execute(self, w, **vargs):
w.forward()
class Backward(Method):
'''Move the cursor left one character'''
def _execute(self, w, **vargs):
w.backward()
class NextLine(Method):
'''Move the cursor down one line'''
def _execute(self, w, **vargs):
w.next_line()
class PreviousLine(Method):
'''Move the cursor up one line'''
def _execute(self, w, **vargs):
w.previous_line()
class PageUp(Method):
'''Move the cursor up one page'''
def _execute(self, w, **vargs):
w.page_up()
class PageDown(Method):
'''Move the cursor down one page'''
def _execute(self, w, **vargs):
w.page_down()
class GotoBeginning(Method):
'''Move the cursor to the beginning of the buffer'''
def _execute(self, w, **vargs):
w.goto_beginning()
class GotoEnd(Method):
'''Move the cursor to the end of the buffer'''
def _execute(self, w, **vargs):
w.goto_end()
class RightWord(Method):
'''Move the cursor to the start of the word to the right'''
def _execute(self, w, **vargs):
w.right_word()
class LeftWord(Method):
'''Move the cursor to the start of the word to the left'''
def _execute(self, w, **vargs):
w.left_word()
class NextSection(Method):
'''Move the cursor to the next section'''
def _execute(self, w, **vargs):
cursor = w.logical_cursor()
i = cursor.y + 1
seen_null_line = False
while i < len(w.buffer.lines):
if seen_null_line:
w.goto_line(i)
break
seen_null_line = regex.whitespace.match(w.buffer.lines[i])
i += 1
class PreviousSection(Method):
'''Move the cursor to the previous section'''
def _execute(self, w, **vargs):
cursor = w.logical_cursor()
i = cursor.y - 1
seen_null_line = False
while i >= 0:
if seen_null_line:
w.goto_line(i)
break
seen_null_line = regex.whitespace.match(w.buffer.lines[i])
i -= 1
class GotoChar(Method):
'''Jump to the specified character'''
args = [Argument("charno", type=type(0), prompt="Goto char: ")]
def _execute(self, w, **vargs):
w.goto_char(vargs["charno"])
class ForwardChars(Method):
'''Move forward the specified number of characters'''
args = [Argument("charno", type=type(0), prompt="Forward chars: ")]
def _execute(self, w, **vargs):
w.forward_chars(vargs["charno"])
class GotoLine(Method):
'''Jump to the specified line number'''
args = [Argument("lineno", type=type(0), prompt="Goto line: ")]
def _execute(self, w, **vargs):
n = vargs["lineno"]
if n < 0:
n = len(w.buffer.lines) + n + 1
if n > len(w.buffer.lines):
n = len(w.buffer.lines)
elif n < 1:
n = 1
w.goto_line(n)
class ForwardLines(Method):
'''Move forward the specified number of lines'''
args = [Argument("lineno", type=type(0), prompt="Forward lines: ")]
def _execute(self, w, **vargs):
w.forward_lines(vargs["lineno"])