diff --git a/buffer.py b/buffer.py index aaa23e6..1e19165 100644 --- a/buffer.py +++ b/buffer.py @@ -677,7 +677,6 @@ class Binary32Buffer(FileBuffer): def __init__(self, path, name=None): '''fb = FileBuffer(path)''' FileBuffer.__init__(self, path, name) - #self.rawdata = [] def _detect_nl_type(self, data): return '\n' def cursorx_to_datax(self, cy, cx): diff --git a/mode/hex.py b/mode/hex.py index cdc381c..ede1f60 100644 --- a/mode/hex.py +++ b/mode/hex.py @@ -3,6 +3,7 @@ from subprocess import Popen, PIPE, STDOUT import color, mode from lex import Grammar, PatternRule, RegionRule from method import Method, Argument +from method.move import GotoBeginning, GotoEnd from point import Point from render import RenderString @@ -19,20 +20,22 @@ class HexSetByteOrder(Method): class HexForward(Method): def _execute(self, w, **vargs): + end = w.buffer.get_buffer_end() + if w.cursor >= end.add(-2, 0): + return w.forward() if w.mode.symbolic_edit: w.forward() - end = w.buffer.get_buffer_end() while w.cursor_char().isspace() and w.cursor < end: w.forward() class HexBackward(Method): def _execute(self, w, **vargs): w.backward() - if w.mode.symbolic_edit: - w.backward() start = w.buffer.get_buffer_start() while w.cursor_char().isspace() and w.cursor > start: w.backward() + if w.mode.symbolic_edit: + w.backward() class HexForwardWord(Method): def _execute(self, w, **vargs): @@ -56,6 +59,14 @@ class HexEndOfLine(Method): if w.cursor_char() == '\n': w.backward() +class HexGotoBeginning(GotoBeginning): + '''Move the cursor to the start of the current hex line''' +class HexGotoEnd(GotoEnd): + '''Move the cursor to the end of the current hex line''' + def _execute(self, w, **vargs): + w.application.methods['goto-end'].execute(w) + w.application.methods['hex-backward'].execute(w) + class HexRead(Method): _is_method = False def __init__(self, type_, fmt): @@ -219,7 +230,7 @@ class Hex(mode.Fundamental): HexStartOfLine, HexEndOfLine, ShowAddress, ShowX86Instruction, GotoAddress, HexSetByteOrder, HexToggleSymbolic, HexOverwriteCharSpace, HexOverwriteCharTab, - HexOverwriteCharNewline] + HexOverwriteCharNewline, HexGotoBeginning, HexGotoEnd] def __init__(self, w): mode.Fundamental.__init__(self, w) self.bindings = {} @@ -277,6 +288,8 @@ class Hex(mode.Fundamental): self.add_bindings('hex-backward-word', ('M-b', 'M-L_ARROW',)) self.add_bindings('hex-start-of-line', ('C-a', 'HOME',)) self.add_bindings('hex-end-of-line', ('C-e', 'END',)) + self.add_bindings('hex-goto-beginning', ('M-<',)) + self.add_bindings('hex-goto-end', ('M->',)) self.add_action_and_bindings(HexRead('char', 'b'), ('C-c b',)) self.add_action_and_bindings(HexRead('uchar', 'B'), ('C-c B',))