##// END OF EJS Templates
Pager shrotcut replaced by new ville's pager hook
Pager shrotcut replaced by new ville's pager hook

File last commit:

r803:6e72f271
r950:0bb856de
Show More
envpersist.py
90 lines | 2.5 KiB | text/x-python | PythonLexer
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 # -*- coding: utf-8 -*-
vivainio
docstring update
r638 """ %env magic command for storing environment variables persistently
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 """
import IPython.ipapi
ip = IPython.ipapi.get()
import os,sys
vivainio
Honor 'readline 0' setting when readline is installed, closes \#178
r784 def restore_env(self):
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 ip = self.getapi()
vivainio
sanitize %env options, add prepend and print
r509 env = ip.db.get('stored_env', {'set' : {}, 'add' : [], 'pre' : []})
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 for k,v in env['set'].items():
os.environ[k] = v
for k,v in env['add']:
os.environ[k] = os.environ.get(k,"") + v
vivainio
sanitize %env options, add prepend and print
r509 for k,v in env['pre']:
os.environ[k] = v + os.environ.get(k,"")
vivainio
raise TryNext in %env restore hook
r803 raise IPython.ipapi.TryNext
vivainio
envpersist.py extension - boosts %env to remember env variables
r508
ip.set_hook('late_startup_hook', restore_env)
def persist_env(self, parameter_s=''):
""" Store environment variables persistently
IPython remembers the values across sessions, which is handy to avoid
editing startup files.
%env - Show all environment variables
%env VISUAL=jed - set VISUAL to jed
%env PATH+=;/foo - append ;foo to PATH
vivainio
sanitize %env options, add prepend and print
r509 %env PATH+=;/bar - also append ;bar to PATH
vivainio
typofix
r510 %env PATH-=/wbin; - prepend /wbin; to PATH
vivainio
sanitize %env options, add prepend and print
r509 %env -d VISUAL - forget VISUAL persistent val
%env -p - print all persistent env modifications
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 """
if not parameter_s.strip():
return os.environ.data
ip = self.getapi()
db = ip.db
vivainio
sanitize %env options, add prepend and print
r509 env = ip.db.get('stored_env', {'set' : {}, 'add' : [], 'pre' : []})
vivainio
envpersist.py extension - boosts %env to remember env variables
r508
vivainio
sanitize %env options, add prepend and print
r509 if parameter_s.startswith('-p'):
return env
elif parameter_s.startswith('-d'):
parts = (parameter_s.split()[1], '<del>')
else:
parts = parameter_s.strip().split('=')
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 if len(parts) == 2:
vivainio
%env 'append on set' bug fixed, strip spaces to allow %env A = 10 instead of %env A=10
r693 k,v = [p.strip() for p in parts]
vivainio
envpersist.py extension - boosts %env to remember env variables
r508
vivainio
sanitize %env options, add prepend and print
r509 if v == '<del>':
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 if k in env['set']:
del env['set'][k]
vivainio
sanitize %env options, add prepend and print
r509 env['add'] = [el for el in env['add'] if el[0] != k]
env['pre'] = [el for el in env['pre'] if el[0] != k]
print "Forgot '%s' (for next session)" % k
vivainio
envpersist.py extension - boosts %env to remember env variables
r508
elif k.endswith('+'):
k = k[:-1]
env['add'].append((k,v))
os.environ[k] += v
vivainio
sanitize %env options, add prepend and print
r509 print k,"after append =",os.environ[k]
elif k.endswith('-'):
k = k[:-1]
env['pre'].append((k,v))
os.environ[k] = v + os.environ.get(k,"")
print k,"after prepend =",os.environ[k]
vivainio
envpersist.py extension - boosts %env to remember env variables
r508 else:
env['set'][k] = v
print "Setting",k,"to",v
vivainio
%env 'append on set' bug fixed, strip spaces to allow %env A = 10 instead of %env A=10
r693 os.environ[k] = v
vivainio
envpersist.py extension - boosts %env to remember env variables
r508
db['stored_env'] = env
vivainio
%env completer
r793 def env_completer(self,event):
""" Custom completer that lists all env vars """
return os.environ.keys()
vivainio
envpersist.py extension - boosts %env to remember env variables
r508
ip.expose_magic('env', persist_env)
vivainio
%env completer
r793 ip.set_hook('complete_command',env_completer, str_key = '%env')