diff --git a/init.example.el b/init.example.el index 609e159a1..52398c67f 100644 --- a/init.example.el +++ b/init.example.el @@ -121,6 +121,7 @@ ;;kotlin ; a better, slicker Java(Script) ;;latex ; writing papers in Emacs has never been so fun ;;lean + ;;factor ;;ledger ; an accounting system in Emacs ;;lua ; one-based indices? one-based indices markdown ; writing docs for people to ignore diff --git a/modules/lang/factor/README.org b/modules/lang/factor/README.org new file mode 100644 index 000000000..e697945dc --- /dev/null +++ b/modules/lang/factor/README.org @@ -0,0 +1,43 @@ +#+TITLE: lang/factor +#+DATE: December 3, 2019 +#+SINCE: v3.0.0 +#+STARTUP: inlineimages + +* Table of Contents :TOC_3:noexport: +- [[#description][Description]] + - [[#module-flags][Module Flags]] + - [[#plugins][Plugins]] + - [[#hacks][Hacks]] +- [[#prerequisites][Prerequisites]] +- [[#configuration][Configuration]] +- [[#troubleshooting][Troubleshooting]] + +* Description +This module adds support to the [[https://github.com/factor/factor][factor]] programming language and its associated +_fuel_ emacs plugin. + ++ If possible, include a brief list of feature highlights here ++ Like code completion, syntax checking or available snippets ++ Include links to packages & external things where possible + +** Module Flags +This module provides no flags. + +** Plugins +{A list of linked plugins} + +** Hacks +{A list of internal modifications to included packages} + +* Prerequisites +You must install [[https://github.com/factor/factor][factor]] to use the advanced functionality of this module. + +* Configuration +This module requires the installation of factor to be available at +=fuel-factor-root-dir=. Here's an example of how to set it: +#+BEGIN_SRC emacs-lisp +(setq fuel-factor-root-dir "/Applications/factor") +#+END_SRC + +* Troubleshooting +Common issues and their solution, or places to look for help. diff --git a/modules/lang/factor/config.el b/modules/lang/factor/config.el new file mode 100644 index 000000000..738070e37 --- /dev/null +++ b/modules/lang/factor/config.el @@ -0,0 +1,47 @@ +;;; lang/factor/config.el -*- lexical-binding: t; -*- + +(use-package! fuel-mode + :defer t + :init + (set-eval-handler! 'factor-mode #'fuel-eval-region) + (set-repl-handler! 'factor-mode #'run-factor) + :config + (set-lookup-handlers! 'factor-mode + :definition #'fuel-edit-word-at-point + :references #'fuel-show-callers + :documentation #'fuel-help)) + +(map! :after factor-mode + :map factor-mode-map + :localleader + "t" #'fuel-test-vocab + (:prefix ("e" . "eval") + "d" #'fuel-eval-definition + "R" #'fuel-eval-extended-region + "r" #'fuel-eval-region) + (:prefix ("h" . "help") + "p" #'fuel-apropos + "v" #'fuel-show-file-words + "c" #'fuel-show-callees + "e" #'fuel-stack-effect-region) + (:prefix ("s" . "scaffold") + "v" #'fuel-scaffold-vocab + "h" #'fuel-scaffold-help + "t" #'fuel-scaffold-tests) + (:prefix ("r" . "refactor") + "s" #'fuel-refactor-extract-sexp + "w" #'fuel-refactor-extract-region + "v" #'fuel-refactor-extract-vocab + "i" #'fuel-refactor-inline-word + "g" #'fuel-refactor-make-generic + "u" #'fuel-update-usings + "r" #'fuel-refactor-rename-word)) + +(map! :after fuel-listener + :map fuel-listener-mode-map + :localleader + "e" #'fuel-edit-vocabulary + "r" #'fuel-refresh-all + "i" #'fuel-stack-mode + "h" #'fuel-help + "s" #'fuel-scaffold-vocab) diff --git a/modules/lang/factor/packages.el b/modules/lang/factor/packages.el new file mode 100644 index 000000000..50fec36be --- /dev/null +++ b/modules/lang/factor/packages.el @@ -0,0 +1,4 @@ +;; -*- no-byte-compile: t; -*- +;;; lang/factor/packages.el + +(package! fuel)