From 3cfba3158e3e4801f63abd5f05ac48a0008b72b9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Sun, 28 Oct 2018 11:42:18 +0100 Subject: [PATCH] Add python script --- config.yaml | 7 +++ dotfiles/pam_environment | 5 ++ dotfiles/programming/python/startup_script.py | 52 +++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 dotfiles/programming/python/startup_script.py diff --git a/config.yaml b/config.yaml index f33b6eb..9d544f4 100644 --- a/config.yaml +++ b/config.yaml @@ -118,6 +118,9 @@ dotfiles: prog_nodejs_npm: dst: ~/.config/npm/npmrc src: programming/nodejs/npmrc + prog_python_startup: + dst: ~/.config/python/startup_script.py + src: programming/python/startup_script.py remind_0_service: actions: - systemd_daemon_reload @@ -171,6 +174,7 @@ profiles: include: - _prog_haskell - _prog_nodejs + - _prog_python _git: dotfiles: - git_config_files @@ -198,6 +202,9 @@ profiles: _prog_nodejs: dotfiles: - prog_nodejs_npm + _prog_python: + dotfiles: + - prog_python_startup _shell_bash: dotfiles: - shell_bash_profile diff --git a/dotfiles/pam_environment b/dotfiles/pam_environment index 09172e1..02741ba 100644 --- a/dotfiles/pam_environment +++ b/dotfiles/pam_environment @@ -16,6 +16,11 @@ VISUAL DEFAULT="vim" PAGER DEFAULT="less" BROWSER DEFAULT="firefox" +# Python +IPYTHONDIR DEFAULT="${XDG_CONFIG_HOME}/ipython" +JUPYTER_CONFIG_DIR DEFAULT="${XDG_CONFIG_HOME}/jupyter" +PYTHONSTARTUP DEFAULT="${XDG_CONFIG_HOME}/python/startup_script.py" + # VIM VIMINIT DEFAULT=":source ${XDG_CONFIG_HOME}/vim/vimrc" diff --git a/dotfiles/programming/python/startup_script.py b/dotfiles/programming/python/startup_script.py new file mode 100644 index 0000000..403afe5 --- /dev/null +++ b/dotfiles/programming/python/startup_script.py @@ -0,0 +1,52 @@ +import sys as sys_ + +# Adapted from /usr/lib/python3.7/site.py # enablerlcompleter +def register_readline(): + import os + import atexit + try: + import readline + import rlcompleter + except ImportError: + return + + # Reading the initialization (config) file may not be enough to set a + # completion key, so we set one first and then read the file. + readline_doc = getattr(readline, '__doc__', '') + if readline_doc is not None and 'libedit' in readline_doc: + readline.parse_and_bind('bind ^I rl_complete') + else: + readline.parse_and_bind('tab: complete') + + try: + readline.read_init_file() + except OSError: + # An OSError here could have many causes, but the most likely one + # is that there's no .inputrc file (or .editrc file in the case of + # Mac OS X + libedit) in the expected location. In that case, we + # want to ignore the exception. + pass + + if readline.get_current_history_length() == 0: + # If no history was loaded, default to .python_history. + # The guard is necessary to avoid doubling history size at + # each interpreter exit when readline was already configured + # through a PYTHONSTARTUP hook, see: + # http://bugs.python.org/issue5845#msg198636 + environ = os.environ.get("XDG_STATE_HOME") or os.environ.get("XDG_DATA_HOME") + if environ is not None: + if not os.path.exists(os.path.join(environ, "python")): + os.mkdir(os.path.join(environ, "python")) + history = os.path.join(environ, "python", "history") + else: + history = os.path.join(os.path.expanduser('~'), + '.python_history') + try: + readline.read_history_file(history) + except OSError: + pass + atexit.register(readline.write_history_file, history) + +sys_.__interactivehook__ = register_readline + +del sys_ -- 2.41.0