##// END OF EJS Templates
cd -foo jumps to dir matching 'foo' in directory history
Ville M. Vainio -
Show More
@@ -12,6 +12,8 b' from IPython.ipapi import TryNext'
12 import IPython.macro
12 import IPython.macro
13 import IPython.Shell
13 import IPython.Shell
14
14
15 __leo_push_history = set()
16
15 def init_ipython(ipy):
17 def init_ipython(ipy):
16 """ This will be run by _ip.load('ipy_leo')
18 """ This will be run by _ip.load('ipy_leo')
17
19
@@ -336,6 +338,17 b' class LeoWorkbook:'
336 if re.match(cmp, node.h, re.IGNORECASE):
338 if re.match(cmp, node.h, re.IGNORECASE):
337 yield node
339 yield node
338 return
340 return
341 def require(self, req):
342 """ Used to control node push dependencies
343
344 Call this as first statement in nodes. If node has not been pushed, it will be pushed before proceeding
345
346 E.g. wb.require('foo') will do wb.foo.ipush() if it hasn't been done already
347 """
348
349 if req not in __leo_push_history:
350 getattr(self.req).ipush()
351
339
352
340 @IPython.generics.complete_object.when_type(LeoWorkbook)
353 @IPython.generics.complete_object.when_type(LeoWorkbook)
341 def workbook_complete(obj, prev):
354 def workbook_complete(obj, prev):
@@ -2693,6 +2693,8 b' Defaulting color scheme to \'NoColor\'"""'
2693
2693
2694 cd -<n>: changes to the n-th directory in the directory history.
2694 cd -<n>: changes to the n-th directory in the directory history.
2695
2695
2696 cd -foo: change to directory that matches 'foo' in history
2697
2696 cd -b <bookmark_name>: jump to a bookmark set by %bookmark
2698 cd -b <bookmark_name>: jump to a bookmark set by %bookmark
2697 (note: cd <bookmark_name> is enough if there is no
2699 (note: cd <bookmark_name> is enough if there is no
2698 directory <bookmark_name>, but a bookmark with the name exists.)
2700 directory <bookmark_name>, but a bookmark with the name exists.)
@@ -2712,6 +2714,7 b' Defaulting color scheme to \'NoColor\'"""'
2712
2714
2713 oldcwd = os.getcwd()
2715 oldcwd = os.getcwd()
2714 numcd = re.match(r'(-)(\d+)$',parameter_s)
2716 numcd = re.match(r'(-)(\d+)$',parameter_s)
2717 wordcd = re.match(r'(-)(\w+)$',parameter_s)
2715 # jump in directory history by number
2718 # jump in directory history by number
2716 if numcd:
2719 if numcd:
2717 nn = int(numcd.group(2))
2720 nn = int(numcd.group(2))
@@ -2722,6 +2725,31 b' Defaulting color scheme to \'NoColor\'"""'
2722 return
2725 return
2723 else:
2726 else:
2724 opts = {}
2727 opts = {}
2728 elif wordcd:
2729 ps = None
2730 fallback = None
2731 pat = wordcd.group(2)
2732 dh = self.shell.user_ns['_dh']
2733 # first search only by basename (last component)
2734 for ent in reversed(dh):
2735 if pat in os.path.basename(ent):
2736 ps = ent
2737 break
2738
2739 if fallback is None and pat in ent:
2740 fallback = ent
2741
2742 # if we have no last part match, pick the first full path match
2743 if ps is None:
2744 ps = fallback
2745
2746 if ps is None:
2747 print "No matching entry in directory history"
2748 return
2749 else:
2750 opts = {}
2751
2752
2725 else:
2753 else:
2726 #turn all non-space-escaping backslashes to slashes,
2754 #turn all non-space-escaping backslashes to slashes,
2727 # for c:\windows\directory\names\
2755 # for c:\windows\directory\names\
General Comments 0
You need to be logged in to leave comments. Login now