Skip to content
Snippets Groups Projects
Select Git revision
  • main default
  • eldoc
  • master protected
  • 0.4.1
  • 0.4.0
  • 0.3.0
  • 0.0.1
  • 0.1.0
  • 0.0.2
  • 0.2.0
10 results

fennel-mode

  • Clone with SSH
  • Clone with HTTPS
  • Phil Hagelberg's avatar
    Phil Hagelberg authored
    e264b93a
    History

    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))

    Note that fennel-mode doesn't inherit from lisp-mode since 0.4.0, and instead switched to prog-mode.

    Interactivity

    Run M-x fennel-repl 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 buffer
    • C-c C-e - Evaluate current top-level form
    • C-c C-r - Evaluate the region
    • C-c C-k - Reload the module for the current file (requires fennel.seacher)
    • C-c C-d - Ask for a value and show its docstring in the repl
    • C-c C-a - Ask for a function and show its argument list in the repl
    • C-c C-l - Display compilation output for the current file
    • C-c C-t - Reformat current buffer with fnlfmt (separate install)
    • M-. - Jump to the definition of a globally-visible function
    • M-' - Jump to the definition of a function in a module
    • M-, - Jump back to where you were before jumping to definition
    • M-TAB - Completion at point (Fennel 0.9.3+)

    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.

    Eldoc support

    As of 0.5.0, the eldoc-mode is supported in regular file buffers, meaning that when the connection to the REPL is established, echo area will show known function arglists and variable documentation. In addition to that documentation popup can be displayed if completion frontend supports this feature.

    Copyright

    Copyright © 2018-2022 Phil Hagelberg and contributors

    Licensed under the same license as Emacs (GPL v3 or later)