This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+lang/factor
Arif Er 00f9ab19ac chore: update copyright headers to 2022
The script used to identify and update the change is added into the GitHub
workflows script directory. A workflow action can be created to trigger the
script to update the headers on the first of every new year. Possibly a task for
a consequent PR.
2022-06-03 17:32:20 +02:00
..
img
local/snippets/factor-mode Small Fixes and Improvents to Factor Layer (#14253) 2021-01-03 09:09:54 +01:00
config.el chore: update copyright headers to 2022 2022-06-03 17:32:20 +02:00
funcs.el chore: update copyright headers to 2022 2022-06-03 17:32:20 +02:00
packages.el chore: update copyright headers to 2022 2022-06-03 17:32:20 +02:00
README.org documentation formatting: Sat Jun 20 21:17:28 UTC 2020 2020-06-20 23:38:28 +02:00

Factor Layer

/TakeV/spacemacs/media/commit/37cdd5069f3d28455cb4a50605456467de1db18f/layers/+lang/factor/img/logo.png

Description

A spacemacs layer for Factor language support.

Features:

  • Syntax Highlighting
  • Factor REPL integration
  • Auto-Completion in REPL
  • Scaffolding support
  • Refactoring support
  • Running graphical Listeners
  • Reloading emacs-lisp portion of FUEL

Install

This layer depends on the elisp files that are bundled with factor. To use this layer, make sure that factor is installed and the bundled elisp files are picked up by emacs (usually somewhere in site-lisp).

To use this layer, add it to your ./spacemacs file. Add factor to the dotspacemacs-configuration-layers list there.

Key bindings

factor-mode (editing source files)

Key binding Description
SPC m ' Jump to the factor listener, start if required
SPC m c c Compile and run the current file
SPC m e f Evaluate definition at point
SPC m e r Evaluate region
SPC m e R Evaluate region extended to nearest definition
SPC m g g Jump to definition of word (under point)
SPC m g a Cycle between source, test, and documentation
SPC m t a Run tests for current vocab
SPC m r s Extract innermost sexp as separate word
SPC m r r Extract region as separate word
SPC m r v Create new Vocab with words in region
SPC m r i Inline word
SPC m r w Rename all occurrences of word
SPC m r a Extract region as new ARTICLE form
SPC m r g Turn current definition into generic word
SPC m r u Update USING: line according to actually used words
SPC m s s Switch to factor listener
SPC m h h Help for thing at point
SPC m h e Infer stack effect for sexp/region
SPC m h p Apropos
SPC m h v List all words in current file/vocab
SPC m h < Show calling words of current word
SPC m h > Show words called by current word
SPC m S v Scaffold vocab
SPC m S h Scaffold help for current vocab

fuel-listener-mode

Key binding Description
SPC m r Refresh all loaded vocabs
SPC m T s Toggle stack mode
SPC m h Help for word at point
SPC m v Edit vocab
SPC m S v Scaffold vocab

Snippets

This layer provides a yasnippet for colon definitions, which can be expanded after typing a single :. Note that you might have to set yas-triggers-in-field to nil if you use x for stack effect declaration elements a lot, as this will trigger a builtin snippet from prog-mode instead of advancing to the next field when pressing <TAB>.

Starting a Graphical Listener

The command factor/start-ui-listener can be used to run a Factor process which sets up a FUEL server on the standard port and runs the graphical listener. If successful, the command connect-to-factor will connect to that factor instance.

This procedure can be influenced with the following variables, which can also be set as directory-local variables to make it easier to work with projects which require different Factor versions, for example. (See their respective documentation for details)

  • fuel-factor-root-dir
  • fuel-listener-factor-binary
  • fuel-listener-factor-image
  • factor-ui-listener-args

Note that the commands described in the Key bindings section which start a factor listener are supplied by FUEL and don't take the last of these variables, factor-ui-listener-args into account.