]> granicus.if.org Git - python/commitdiff
Patch 611069 (Christos Georgiou) IDLE TODO:left/right when selected text
authorKurt B. Kaiser <kbk@shore.net>
Fri, 17 Jan 2003 04:04:06 +0000 (04:04 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Fri, 17 Jan 2003 04:04:06 +0000 (04:04 +0000)
M EditorWindow.py
M NEWS.txt
M TODO.txt

Lib/idlelib/EditorWindow.py
Lib/idlelib/NEWS.txt
Lib/idlelib/TODO.txt

index b9522fc3e1928c91f933d3848de3092e02b89857..fcb1612f1f6d946d05941f6dfa1415725f5a8775 100644 (file)
@@ -132,6 +132,8 @@ class EditorWindow:
         text.bind("<<untabify-region>>",self.untabify_region_event)
         text.bind("<<toggle-tabs>>",self.toggle_tabs_event)
         text.bind("<<change-indentwidth>>",self.change_indentwidth_event)
+        text.bind("<Left>", self.move_at_edge_if_selection(0))
+        text.bind("<Right>", self.move_at_edge_if_selection(1))
 
         if flist:
             flist.inversedict[self] = key
@@ -344,6 +346,26 @@ class EditorWindow:
         self.text.tag_remove("sel", "1.0", "end")
         self.text.see("insert")
 
+    def move_at_edge_if_selection(self, edge_index):
+        """Cursor move begins at start or end of selection
+
+        When a left/right cursor key is pressed create and return to Tkinter a
+        function which causes a cursor move from the associated edge of the
+        selection.
+
+        """
+        self_text_index = self.text.index
+        self_text_mark_set = self.text.mark_set
+        edges_table = ("sel.first+1c", "sel.last-1c")
+        def move_at_edge(event):
+            if (event.state & 5) == 0: # no shift(==1) or control(==4) pressed
+                try:
+                    self_text_index("sel.first")
+                    self_text_mark_set("insert", edges_table[edge_index])
+                except TclError:
+                    pass
+        return move_at_edge
+
     def find_event(self, event):
         SearchDialog.find(self.text)
         return "break"
index f6ed853070c0af148d353d8f09d3559e3c9236b9..07904a3253c8522f0489fdc2abf23539a6186abf 100644 (file)
@@ -7,6 +7,12 @@ What's New in IDLEfork 0.9 Alpha 2?
 
 *Release date: XX-XXX-2003*
 
+- Left cursor move in presence of selected text now moves from left end
+  of the selection.
+
+- Add Meta keybindings to "IDLE Classic Windows" to handle reversed
+  Alt/Meta on some Linux distros.
+
 - Change default: IDLE now starts with Python Shell.
 
 - Removed the File Path from the Additional Help Sources scrolled list.
index 96b045020296d4f13a67954cf2d34db29784b2d3..c1207b6818934dc4be069bceaf731c4eb96ccb45 100644 (file)
@@ -46,8 +46,6 @@ TO DO:
 
 Details:
 
-- when there's a selection, left/right arrow should go to either
-  end of the selection
 - ^O (on Unix -- open-line) should honor autoindent
 - after paste, show end of pasted text
 - on Windows, should turn short filename to long filename (not only in argv!)