diff --git a/doc/ChangeLog b/doc/ChangeLog index 02be9a4..730a5fe 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2008-08-25 Jörgen Stenarson + * Merging tab insert patch from Vivian De Smedt. Removed comments + with vds initials. + 2008-02-21 Jörgen Stenarson * unicodehelper functions now defaults to ascii if supplied pyreadline_encoding is not a valid encoding. This is a brute force solution to ticket #228 it fixes diff --git a/pyreadline/modes/basemode.py b/pyreadline/modes/basemode.py index 1d4ff64..8437cbe 100644 --- a/pyreadline/modes/basemode.py +++ b/pyreadline/modes/basemode.py @@ -25,6 +25,7 @@ class BaseMode(object): self.key_dispatch = {} self.argument=1 self.prevargument=None + self.tabstop = 4 def __repr__(self): return "" diff --git a/pyreadline/modes/emacs.py b/pyreadline/modes/emacs.py index b29a7b8..9fb80d0 100644 --- a/pyreadline/modes/emacs.py +++ b/pyreadline/modes/emacs.py @@ -283,7 +283,8 @@ class EmacsMode(basemode.BaseMode): def tab_insert(self, e): # (M-TAB) '''Insert a tab character. ''' - ws = ' ' * (self.tabstop - (self.line_cursor%self.tabstop)) + cursor = min(self.l_buffer.point, len(self.l_buffer.line_buffer)) + ws = ' ' * (self.tabstop - (cursor % self.tabstop)) self.insert_text(ws) def transpose_chars(self, e): # (C-t) diff --git a/pyreadline/modes/notemacs.py b/pyreadline/modes/notemacs.py index 539e3a0..67b2efa 100644 --- a/pyreadline/modes/notemacs.py +++ b/pyreadline/modes/notemacs.py @@ -272,7 +272,8 @@ class NotEmacsMode(basemode.BaseMode): def tab_insert(self, e): # (M-TAB) '''Insert a tab character. ''' - ws = ' ' * (self.tabstop - (self.line_cursor%self.tabstop)) + cursor = min(self.l_buffer.point, len(self.l_buffer.line_buffer)) + ws = ' ' * (self.tabstop - (cursor % self.tabstop)) self.insert_text(ws) def self_insert(self, e): # (a, b, A, 1, !, ...)