Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 1.63 KB

README.org

File metadata and controls

52 lines (37 loc) · 1.63 KB

Jedhy

Last Hy version verified working for: Hy 0.16.0

jedhy provides autocompletion, documentation introspection and formatting, and other tools useful to IDEs for Hy, a lisp embedded in Python.

Leveraged in Emacs hy-mode IDE which I maintain.

Install from pypi pip install jedhy.

Features

  1. Completes:
    1. All standard python constructs (builtins, user-defined funcs, modules, etc.)
    2. Hy constructs (macros, shadowed operators, compile table)
    3. All of the above with Hy’s mangling rules handled.
  2. Documentation introspection and formatting (eg. for Emacs Eldoc mode).
  3. Annotations (eg. for Emacs Company mode).

Jedhy is fully tested. The tests folder is the easiest way to see example usage.

See jedhy.api, the simple entry point.

Example Usage

(setv jedhy (jedhy.api.API))

;; Add some stuff to namespace
(import [numpy :as np])
(import itertools)
(defclass Foo [object] "A class\nDetails..." (defn --init-- [self x y]))
(defmacro foo-macro [x])

(jedhy.set-namespace :locals- (locals) :macros- --macros--)

;; COMPLETION
(jedhy.complete "pr")     ; print
(jedhy.complete "print.") ; print.--call--, print.--str--, ...
(jedhy.complete "np.a")   ; np.add, np.array, ...
(jedhy.complete "foo-")   ; foo-macro

;; DOCS
(jedhy.docs "itertools")  ; "Functional tools for creating and using iterators."
(jedhy.docs "Foo")        ; "Foo: (x y) - A class"
(jedhy.full-docs "Foo")   ; "Foo: (x y) - A class\nDetails..."

;; ANNOTATION
(jedhy.annotate "itertools") ; <module itertools>
(jedhy.annotate "try")       ; <compiler try>