mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	Home / Control-A toggles between left margin and end of leading white
space. Patch 1196903 Jeff Shute. M idlelib/PyShell.py M idlelib/EditorWindow.py M idlelib/NEWS.txt
This commit is contained in:
		
							parent
							
								
									ef1e58b6f3
								
							
						
					
					
						commit
						93cdae5f81
					
				
					 3 changed files with 48 additions and 11 deletions
				
			
		|  | @ -153,6 +153,7 @@ def __init__(self, flist=None, filename=None, key=None, root=None): | |||
|         text.bind("<Right>", self.move_at_edge_if_selection(1)) | ||||
|         text.bind("<<del-word-left>>", self.del_word_left) | ||||
|         text.bind("<<del-word-right>>", self.del_word_right) | ||||
|         text.bind("<<beginning-of-line>>", self.home_callback) | ||||
| 
 | ||||
|         if flist: | ||||
|             flist.inversedict[self] = key | ||||
|  | @ -281,6 +282,50 @@ def new_callback(self, event): | |||
|         self.flist.new(dirname) | ||||
|         return "break" | ||||
| 
 | ||||
|     def home_callback(self, event): | ||||
|         if (event.state & 12) != 0 and event.keysym == "Home": | ||||
|             # state&1==shift, state&4==control, state&8==alt | ||||
|             return # <Modifier-Home>; fall back to class binding | ||||
| 
 | ||||
|         if self.text.index("iomark") and \ | ||||
|            self.text.compare("iomark", "<=", "insert lineend") and \ | ||||
|            self.text.compare("insert linestart", "<=", "iomark"): | ||||
|             insertpt = int(self.text.index("iomark").split(".")[1]) | ||||
|         else: | ||||
|             line = self.text.get("insert linestart", "insert lineend") | ||||
|             for insertpt in xrange(len(line)): | ||||
|                 if line[insertpt] not in (' ','\t'): | ||||
|                     break | ||||
|             else: | ||||
|                 insertpt=len(line) | ||||
| 
 | ||||
|         lineat = int(self.text.index("insert").split('.')[1]) | ||||
| 
 | ||||
|         if insertpt == lineat: | ||||
|             insertpt = 0 | ||||
| 
 | ||||
|         dest = "insert linestart+"+str(insertpt)+"c" | ||||
| 
 | ||||
|         if (event.state&1) == 0: | ||||
|             # shift not pressed | ||||
|             self.text.tag_remove("sel", "1.0", "end") | ||||
|         else: | ||||
|             if not self.text.index("sel.first"): | ||||
|                 self.text.mark_set("anchor","insert") | ||||
| 
 | ||||
|             first = self.text.index(dest) | ||||
|             last = self.text.index("anchor") | ||||
| 
 | ||||
|             if self.text.compare(first,">",last): | ||||
|                 first,last = last,first | ||||
| 
 | ||||
|             self.text.tag_remove("sel", "1.0", "end") | ||||
|             self.text.tag_add("sel", first, last) | ||||
| 
 | ||||
|         self.text.mark_set("insert", dest) | ||||
|         self.text.see("insert") | ||||
|         return "break" | ||||
| 
 | ||||
|     def set_status_bar(self): | ||||
|         self.status_bar = self.MultiStatusBar(self.top) | ||||
|         if macosxSupport.runningAsOSXApp(): | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kurt B. Kaiser
						Kurt B. Kaiser