- Emacs Lisp 100%
| .gitignore | Pacify byte-compiler. | |
| changelog.md | Add with-open. | |
| fennel-mode.el | Add support for jumping to definition of a function in a module. | |
| Readme.md | Add support for jumping to definition of a function in a module. | |
Fennel Mode
Font-lock, indentation, navigation, documentation, and repl support for the Fennel programming language.
Supports M-x imenu for quick navigation to local definitions.
Installation
Place fennel-mode.el on your load-path and add this to your config:
(autoload 'fennel-mode "/path/to/fennel-mode/fennel-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.fnl\\'" . fennel-mode))
Interactivity
Run C-u M-x run-lisp RET fennel RET to open a repl buffer. Once a
repl is open, you can send code from a fennel-mode buffer to be evaluated.
C-c C-z- Start or switch to repl bufferC-c C-e- Evaluate current top-level formC-c C-r- Evaluate the regionC-c C-k- Reload the module for the current file (requiresfennel.seacher)C-c C-d- Ask for a value and show its docstring in the replC-c C-l- Display compilation output for the current fileC-c C-t- Reformat current buffer with fnlfmt (separate install)M-.- Jump to the definition of a globally-visible functionM-'- Jump to the definition of a function in a moduleM-,- Jump back to where you were before jumping to definition
These functions assume a fennel executable is present on your
path. You can override the location by setting inferior-lisp-program.
For instance, if you have
a stdio repl
in a LÖVE game, you can set this to love . to
get an interactive support with reloads.
Note that finding the definition of a function with M-. only works when the
function is in scope for the repl, which means it's usually best to
load a module and set it as a global if you want to use it this way.
Copyright
Copyright © 2018-2021 Phil Hagelberg and contributors
Licensed under the same license as Emacs (GPL v3 or later)