1
0
mirror of https://github.com/wting/autojump synced 2024-10-27 20:34:07 +00:00

more pylint

This commit is contained in:
Joel Schaerer 2011-01-03 23:23:26 +01:00
parent 43d2d94a48
commit ed5b2b2fed

View File

@ -28,24 +28,28 @@ from tempfile import NamedTemporaryFile
from operator import itemgetter from operator import itemgetter
import os import os
import signal import signal
max_keyweight = 1000 MAX_KEYWEIGHT = 1000
max_stored_paths = 600 MAX_STORED_PATHS = 600
completion_separator = '__' COMPLETION_SEPARATOR = '__'
config_dir = os.environ.get("AUTOJUMP_DATA_DIR", os.path.expanduser("~")) CONFIG_DIR = os.environ.get("AUTOJUMP_DATA_DIR", os.path.expanduser("~"))
def signal_handler(arg1, arg2): def signal_handler(arg1, arg2):
"""Autojump shouldn't break on SIGINT"""
print("Received SIGINT, trying to continue") print("Received SIGINT, trying to continue")
signal.signal(signal.SIGINT, signal_handler) #Don't break on sigint signal.signal(signal.SIGINT, signal_handler)
def uniqadd(list, key): def uniqadd(collection, key):
if key not in list: """Adds a key to a list only if it is not already present"""
list.append(key) if key not in collection:
collection.append(key)
def dicadd(dic, key, increment=1): def dicadd(dic, key, increment=1):
"""Increment a value in a dic, set it to 0
if is is not already present"""
dic[key] = dic.get(key, 0.)+increment dic[key] = dic.get(key, 0.)+increment
def save(path_dict, dic_file): def save(path_dict, dic_file):
f = NamedTemporaryFile(dir=config_dir, delete=False) f = NamedTemporaryFile(dir=CONFIG_DIR, delete=False)
pickle.dump(path_dict, f, -1) pickle.dump(path_dict, f, -1)
f.flush() f.flush()
os.fsync(f) os.fsync(f)
@ -66,17 +70,17 @@ def forget(path_dict, dic_file):
"""Gradually forget about directories. Only call """Gradually forget about directories. Only call
from the actual jump since it can take time""" from the actual jump since it can take time"""
keyweight = sum(path_dict.values()) keyweight = sum(path_dict.values())
if keyweight>max_keyweight: if keyweight>MAX_KEYWEIGHT:
for k in path_dict.keys(): for k in path_dict.keys():
path_dict[k]*=0.9*max_keyweight/keyweight path_dict[k]*=0.9*MAX_KEYWEIGHT/keyweight
save(path_dict, dic_file) save(path_dict, dic_file)
def clean_dict(sorted_dirs, path_dict): def clean_dict(sorted_dirs, path_dict):
"""Limits the sized of the path_dict to max_stored_paths. """Limits the sized of the path_dict to MAX_STORED_PATHS.
Returns True if keys were deleted""" Returns True if keys were deleted"""
if len(sorted_dirs) > max_stored_paths: if len(sorted_dirs) > MAX_STORED_PATHS:
#remove 25 more than needed, to avoid doing it every time #remove 25 more than needed, to avoid doing it every time
for dir, dummy in sorted_dirs[max_stored_paths-25:]: for dir, dummy in sorted_dirs[MAX_STORED_PATHS-25:]:
del path_dict[dir] del path_dict[dir]
return True return True
else: return False else: return False
@ -137,10 +141,10 @@ except getopt.GetoptError as e:
print("Unknown command line argument: %s" % e) print("Unknown command line argument: %s" % e)
exit(1) exit(1)
if config_dir == os.path.expanduser("~"): if CONFIG_DIR == os.path.expanduser("~"):
dic_file = config_dir+"/.autojump_py" dic_file = CONFIG_DIR+"/.autojump_py"
else: else:
dic_file = config_dir+"/autojump_py" dic_file = CONFIG_DIR+"/autojump_py"
path_dict = open_dic(dic_file) path_dict = open_dic(dic_file)
if ('-a', '') in optlist: if ('-a', '') in optlist:
# The home dir can be reached quickly by "cd" # The home dir can be reached quickly by "cd"
@ -174,20 +178,20 @@ else:
# If the last pattern contains a full path, jump there # If the last pattern contains a full path, jump there
# The regexp is because we need to support stuff like # The regexp is because we need to support stuff like
# "j wo jo__3__/home/joel/workspace/joel" for zsh # "j wo jo__3__/home/joel/workspace/joel" for zsh
last_pattern_path = re.sub("(.*)"+completion_separator, "", patterns[-1]) last_pattern_path = re.sub("(.*)"+COMPLETION_SEPARATOR, "", patterns[-1])
if (len(last_pattern_path)>0 and if (len(last_pattern_path)>0 and
last_pattern_path[0] == "/" and last_pattern_path[0] == "/" and
os.path.exists(last_pattern_path)): os.path.exists(last_pattern_path)):
if not completion: print(last_pattern_path) if not completion: print(last_pattern_path)
else: else:
#check for ongoing completion, and act accordingly #check for ongoing completion, and act accordingly
endmatch = re.search(completion_separator+"([0-9]+)", patterns[-1]) endmatch = re.search(COMPLETION_SEPARATOR+"([0-9]+)", patterns[-1])
if endmatch: #user has selected a completion if endmatch: #user has selected a completion
userchoice = int(endmatch.group(1)) userchoice = int(endmatch.group(1))
patterns[-1] = re.sub(completion_separator+"[0-9]+.*", patterns[-1] = re.sub(COMPLETION_SEPARATOR+"[0-9]+.*",
"", patterns[-1]) "", patterns[-1])
else: #user hasn't selected a completion, display the same choices again else: #user hasn't selected a completion, display the same choices again
endmatch = re.match("(.*)"+completion_separator, patterns[-1]) endmatch = re.match("(.*)"+COMPLETION_SEPARATOR, patterns[-1])
if endmatch: patterns[-1] = endmatch.group(1) if endmatch: patterns[-1] = endmatch.group(1)
dirs = list(path_dict.items()) dirs = list(path_dict.items())
@ -214,6 +218,6 @@ else:
print(quotes+results[userchoice-1]+quotes) print(quotes+results[userchoice-1]+quotes)
elif len(results) > 1 and completion: elif len(results) > 1 and completion:
print("\n".join(("%s%s%d%s%s" % (patterns[-1], print("\n".join(("%s%s%d%s%s" % (patterns[-1],
completion_separator, n+1, completion_separator, r) COMPLETION_SEPARATOR, n+1, COMPLETION_SEPARATOR, r)
for n, r in enumerate(results[:8])))) for n, r in enumerate(results[:8]))))
elif results: print(quotes+results[0]+quotes) elif results: print(quotes+results[0]+quotes)