mirror of
				https://github.com/wting/autojump
				synced 2025-06-13 12:54:07 +00:00 
			
		
		
		
	separate --increase from --add, print out directory weights, don't add home directory to database
This commit is contained in:
		
							parent
							
								
									fcd7465ed8
								
							
						
					
					
						commit
						96a2206931
					
				
							
								
								
									
										60
									
								
								bin/autojump
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								bin/autojump
									
									
									
									
									
								
							| @ -57,6 +57,9 @@ class Database: | ||||
|         """ | ||||
|         Increase weight of existing paths or initialize new ones to 10. | ||||
|         """ | ||||
|         if path == self.config['home']: | ||||
|             return | ||||
| 
 | ||||
|         path = path.rstrip(os.sep) | ||||
| 
 | ||||
|         if self.data[path]: | ||||
| @ -70,6 +73,9 @@ class Database: | ||||
|         """ | ||||
|         Decrease weight of existing path. Unknown ones are ignored. | ||||
|         """ | ||||
|         if path == self.config['home']: | ||||
|             return | ||||
| 
 | ||||
|         if self.data[path] < increment: | ||||
|             self.data[path] = 0 | ||||
|         else: | ||||
| @ -205,32 +211,30 @@ class Database: | ||||
| def set_defaults(): | ||||
|     config = {} | ||||
| 
 | ||||
|     config['version'] = 'release-v21.6.0' | ||||
|     config['version'] = 'release-v21.6.1' | ||||
|     config['max_weight'] = 1000 | ||||
|     config['max_paths'] = 1000 | ||||
|     config['separator'] = '__' | ||||
|     config['home'] = os.path.expanduser('HOME') | ||||
| 
 | ||||
|     config['ignore_case'] = False | ||||
|     config['keep_entries'] = False | ||||
|     config['keep_symlinks'] = False | ||||
|     config['debug'] = False | ||||
| 
 | ||||
|     home = os.path.expanduser('HOME') | ||||
|     xdg_data = os.environ.get('XDG_DATA_HOME') or \ | ||||
|             os.path.join(home, '.local', 'share') | ||||
|             os.path.join(config['home'], '.local', 'share') | ||||
|     config['data'] = os.path.join(xdg_data, 'autojump') | ||||
|     config['db'] = config['data'] + '/autojump.txt' | ||||
| 
 | ||||
|     return config | ||||
| 
 | ||||
| def parse_env(config): | ||||
|     home = os.path.expanduser('HOME') | ||||
| 
 | ||||
|     if 'AUTOJUMP_DATA_DIR' in os.environ: | ||||
|         config['data'] = os.environ.get('AUTOJUMP_DATA_DIR') | ||||
|         config['db'] = config['data'] + '/autojump.txt' | ||||
| 
 | ||||
|     if config['data'] == home: | ||||
|     if config['data'] == config['home']: | ||||
|         config['db'] = config['data'] + '/.autojump.txt' | ||||
| 
 | ||||
|     if 'AUTOJUMP_KEEP_ALL_ENTRIES' in os.environ and \ | ||||
| @ -256,9 +260,12 @@ def parse_arg(config): | ||||
|             'directory', metavar='DIRECTORY', nargs='*', default='', | ||||
|             help='directory to jump to') | ||||
|     parser.add_argument( | ||||
|             '-a', '--add', '--increase', metavar='DIRECTORY', | ||||
|             help='manually add path to database, or increase path weight for \ | ||||
|             existing paths') | ||||
|             '-a', '--add', metavar='DIRECTORY', | ||||
|             help='manually add path to database') | ||||
|     parser.add_argument( | ||||
|             '-i', '--increase', metavar='WEIGHT', nargs='?', type=int, | ||||
|             const=20, default=False, | ||||
|             help='manually increase path weight in database') | ||||
|     parser.add_argument( | ||||
|             '-d', '--decrease', metavar='WEIGHT', nargs='?', type=int, | ||||
|             const=15, default=False, | ||||
| @ -282,19 +289,23 @@ def parse_arg(config): | ||||
|     args = parser.parse_args() | ||||
|     db = Database(config) | ||||
| 
 | ||||
|     if (args.add): | ||||
|         if (args.add != os.path.expanduser("~")): | ||||
|             db.add(decode(args.add)) | ||||
| 
 | ||||
|     if args.add: | ||||
|         db.add(decode(args.add)) | ||||
|         sys.exit(0) | ||||
| 
 | ||||
|     if (args.decrease): | ||||
|         if (args.decrease != os.path.expanduser("~")): | ||||
|             db.decrease(os.getcwd(), args.decrease) | ||||
| 
 | ||||
|     if args.increase: | ||||
|         print("%.2f:\t old directory weight" % db.get_weight(os.getcwd())) | ||||
|         db.add(os.getcwd(), args.increase) | ||||
|         print("%.2f:\t new directory weight" % db.get_weight(os.getcwd())) | ||||
|         sys.exit(0) | ||||
| 
 | ||||
|     if (args.purge): | ||||
|     if args.decrease: | ||||
|         print("%.2f:\t old directory weight" % db.get_weight(os.getcwd())) | ||||
|         db.decrease(os.getcwd(), args.decrease) | ||||
|         print("%.2f:\t new directory weight" % db.get_weight(os.getcwd())) | ||||
|         sys.exit(0) | ||||
| 
 | ||||
|     if args.purge: | ||||
|         removed = db.purge() | ||||
| 
 | ||||
|         if len(removed): | ||||
| @ -305,7 +316,7 @@ def parse_arg(config): | ||||
| 
 | ||||
|         sys.exit(0) | ||||
| 
 | ||||
|     if (args.stat): | ||||
|     if args.stat: | ||||
|         for path, weight in sorted(db.data.items(), | ||||
|                 key=operator.itemgetter(1))[-100:]: | ||||
|             output(unico("%.1f:\t%s") % (weight, path)) | ||||
| @ -313,8 +324,9 @@ def parse_arg(config): | ||||
|         print("________________________________________\n") | ||||
|         print("%d:\t total key weight" % sum(db.data.values())) | ||||
|         print("%d:\t stored directories" % len(db.data)) | ||||
|         print("db file: %s" % config['db']) | ||||
|         print("%.2f:\t current directory weight" % db.get_weight(os.getcwd())) | ||||
| 
 | ||||
|         print("\ndb file: %s" % config['db']) | ||||
|         sys.exit(0) | ||||
| 
 | ||||
|     config['args'] = args | ||||
| @ -352,17 +364,17 @@ def unico(text): | ||||
|     else: | ||||
|         return unicode(text) | ||||
| 
 | ||||
| def match_last(pattern): | ||||
| def match_last(config, pattern): | ||||
|     """ | ||||
|     If the last pattern contains a full path, jump there. | ||||
|     The regexp is because we need to support stuff like | ||||
|     "j wo jo__3__/home/joel/workspace/joel" for zsh. | ||||
|     """ | ||||
|     last_pattern_path = re.sub("(.*)"+COMPLETION_SEPARATOR, "", pattern[-1]) | ||||
|     last_pattern_path = re.sub("(.*)"+config['separator'], "", pattern[-1]) | ||||
|     if (len(last_pattern_path) > 0 and | ||||
|             last_pattern_path[0] == "/" and | ||||
|             os.path.exists(last_pattern_path)): | ||||
|         if not ARGS.complete: | ||||
|         if not config['args'].complete: | ||||
|             output(last_pattern_path) | ||||
|             return True | ||||
|     return False | ||||
| @ -476,7 +488,7 @@ def main(): | ||||
| 
 | ||||
|     # check last pattern for full path | ||||
|     # FIXME: disabled until zsh tab completion is fixed on the shell side | ||||
|     # if match_last(patterns): | ||||
|     # if match_last(config, patterns): | ||||
|         # return True | ||||
| 
 | ||||
|     # check for tab completion | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user