#+TITLE: Hy layer #+TAGS: general|layer|multi-paradigm|programming [[file:img/hy.png]] * Table of Contents :TOC_5_gh:noexport: - [[#description][Description]] - [[#features][Features:]] - [[#install][Install]] - [[#layer][Layer]] - [[#auto-completion][Auto-completion]] - [[#key-bindings][Key bindings]] - [[#debug][Debug]] - [[#repl][REPL]] - [[#tests][Tests]] - [[#python-environments][Python environments]] * Description This layer adds support for the Hy language based on Python. ** Features: - syntax-highlighting - Auto-completion - Code Navigation - Python test runners (see [[file:../python/README.org][python layer]]) - Virtual Environment using [[https://github.com/jorgenschaefer/pyvenv][pyvenv]] and [[https://github.com/yyuu/pyenv][pyenv]] - Org Babel support * Install ** Layer To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =hy= to the existing =dotspacemacs-configuration-layers= list in this file. To install =hy= globally: #+BEGIN_SRC sh pip3 install hy #+END_SRC ** Auto-completion [[https://github.com/hylang/hy-mode][hy-mode]] relies on [[https://github.com/ekaschalk/jedhy][jedhy]] for auto-completion. =jedhy= can be installed with: #+BEGIN_SRC sh pip3 install jedhy #+END_SRC * Key bindings ** Debug | Key binding | Description | |-------------+---------------------| | ~SPC m d d~ | insert pdb | | ~SPC m d t~ | insert pdb threaded | ** REPL Start a Hy inferior REPL process with ~SPC m s i~. If =hy= is available in system executable search paths, =hy= will be used to launch the shell. You may change your system executable search path by activating a virtual environment. Send code to hy REPL commands: | Key binding | Description | |-------------+-----------------------------------------------------------------| | ~SPC m s b~ | send buffer to the REPL | | ~SPC m s B~ | send buffer to the REPL and switch to it | | ~SPC m s c~ | send form containing current point to the REPL | | ~SPC m s C~ | send form containing current point to the REPL and switch to it | | ~SPC m s i~ | start and/or switch to REPL | | ~SPC m s r~ | send current region to the REPL | | ~SPC m s R~ | send current region to the REPL and switch to it | | ~SPC m s s~ | start and/or swithc to REPL | ** Tests | Key binding | Description | |-------------+------------------------------------------------------| | ~SPC m t a~ | launch all tests of the project | | ~SPC m t A~ | launch all tests of the project in debug mode | | ~SPC m t m~ | launch all tests of the current module | | ~SPC m t M~ | launch all tests of the current module in debug mode | ** Python environments | Key binding | Description | |---------------+-------------------------------------------------| | ~SPC m v a~ | activate a virtual environment in any directory | | ~SPC m v d~ | deactivate active virtual environment | | ~SPC m v s~ | set a pyenv environment with [[https://github.com/pyenv/pyenv][pyenv]] | | ~SPC m v u~ | unset a pyenv environment with [[https://github.com/pyenv/pyenv][pyenv]] | | ~SPC m v w~ | work on virtual environment in =WORKON_HOME= | | ~SPC m v p a~ | activate pipenv in current project | | ~SPC m v p d~ | deactivate pipenv in current project | | ~SPC m v p i~ | install module into pipenv environment | | ~SPC m v p o~ | open pipenv module in buffer | | ~SPC m v p s~ | launch pipenv shell in current project | | ~SPC m v p u~ | uninstall module from pipenv environment |