{"id":17384058,"url":"https://github.com/mcandre/fuel","last_synced_at":"2025-10-04T08:45:18.077Z","repository":{"id":7880857,"uuid":"9255856","full_name":"mcandre/fuel","owner":"mcandre","description":"Factor's Ultimate Emacs Library - an emacs major mode for writing Factor code","archived":false,"fork":false,"pushed_at":"2013-05-03T16:47:51.000Z","size":156,"stargazers_count":23,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T21:15:30.245Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcandre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-06T05:36:08.000Z","updated_at":"2024-10-18T16:20:58.000Z","dependencies_parsed_at":"2022-09-03T08:51:35.385Z","dependency_job_id":null,"html_url":"https://github.com/mcandre/fuel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Ffuel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Ffuel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Ffuel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Ffuel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcandre","download_url":"https://codeload.github.com/mcandre/fuel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248841569,"owners_count":21170210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-16T07:44:30.415Z","updated_at":"2025-10-04T08:45:13.037Z","avatar_url":"https://github.com/mcandre.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FUEL, Factor's Ultimate Emacs Library\n\nFUEL provides a complete environment for your Factor coding pleasure\ninside Emacs, including source code edition and interaction with a\nFactor listener instance running within Emacs.\n\nFUEL was started by Jose A Ortega as an extension to Eduardo Cavazos'\noriginal factor.el code. Eduardo is also responsible of naming the\nbeast.\n\n## Installation\n\nFUEL comes bundled with [Factor](http://factorcode.org/), in the folder misc/fuel.\n\nTo install FUEL, setup [Marmalade](http://marmalade-repo.org/) and `M-x package-install fuel` and add this line to your Emacs initialisation:\n\n    (require 'factor-mode)\n\n## Basic usage\n\n### Running the listener\n\nIf you're using the default factor binary and images locations inside the Factor's source tree, that should be enough to start using FUEL.\n\nEditing any file with the extension `.factor` will put you in factor-mode; try `C-hm` for a summary of available commands.\n\nTo start the listener, try `M-x run-factor`.\n\nBy default, FUEL will try to use the binary and image files in the factor installation directory. You can customize them with:\n\n    (setq fuel-listener-factor-binary \u003cfull path to factor\u003e)\n    (setq fuel-listener-factor-image \u003cfull path to factor image\u003e)\n\nMany aspects of the environment can be customized: `M-x customize-group fuel` will show you how many.\n\n### Faster listener startup\n\nOn startup, run-factor loads the fuel vocabulary, which can take a while. If you want to speedup the load process, type `save` in the listener prompt just after invoking run-factor. This will save a factor image (overwriting the current one) with all the needed vocabs.\n\nAlternatively, you can add the following line to your `.factor-boot-rc` file:\n\n    \"fuel\" require\n\nThis will ensure that the image generated while bootstrapping Factor contains fuel and the vocabularies it depends on.\n\n### Connecting to a running Factor\n\n`run-factor` starts a new factor listener process managed by Emacs. If you prefer to start Factor externally, you can also connect remotely from Emacs. Here's how to proceed:\n\n* In the factor listener, run FUEL: \"fuel\" run. This will start a server listener in port 9000.\n* Switch to Emacs and issue the command `M-x connect-to-factor`.\n\nThat's it; you should be up and running. See the help for `connect-to-factor` for how to use a different port.\n\n### Vocabulary creation\n\nFUEL offers a basic interface to Factor's scaffolding utilities. To create a new vocabulary directory and associated files:\n\n    M-x fuel-scaffold-vocab\n\nand when in a vocab file, to create a docs file with boilerplate\nfor each word:\n\n    M-x fuel-scaffold-help\n\n#### Quick key reference\n\nTriple chords ending in a single letter \u003cx\u003e accept also C-\u003cx\u003e (e.g. C-c C-e C-r is the same as C-c C-e r).\n\n### In factor source files\n\nCommands in parenthesis can be invoked interactively with\nM-x \u003ccommand\u003e, not necessarily in a factor buffer.\n\n    |--------------------+------------------------------------------------------------|\n    | C-c C-z            | switch to listener (run-factor)                            |\n    | C-c C-o            | cycle between code, tests and docs files                   |\n    | C-c C-t            | run the unit tests for a vocabulary                        |\n    | C-c C-r            | switch to listener and refresh all loaded vocabs           |\n    | C-c C-s            | switch to other factor buffer (fuel-switch-to-buffer)      |\n    | C-x 4 s            | switch to other factor buffer in other window              |\n    | C-x 5 s            | switch to other factor buffer in other frame               |\n    |--------------------+------------------------------------------------------------|\n    | M-.                | edit word at point in Emacs (fuel-edit-word)               |\n    | M-,                | go back to where M-. was last invoked                      |\n    | M-TAB              | complete word at point                                     |\n    | C-c C-e u          | update USING: line (fuel-update-usings)                    |\n    | C-c C-e v          | edit vocabulary (fuel-edit-vocabulary)                     |\n    | C-c C-e w          | edit word (fuel-edit-word-at-point)                        |\n    | C-c C-e d          | edit word's doc (C-u M-x fuel-edit-word-doc-at-point)      |\n    | C-c C-e l          | load vocabs in USING: form                                 |\n    |--------------------+------------------------------------------------------------|\n    | C-c C-e r          | eval region                                                |\n    | C-M-r, C-c C-e e   | eval region, extending it to definition boundaries         |\n    | C-M-x, C-c C-e x   | eval definition around point                               |\n    | C-c C-k, C-c C-e k | run file (fuel-run-file)                                   |\n    |--------------------+------------------------------------------------------------|\n    | C-c C-d a          | toggle autodoc mode (fuel-autodoc-mode)                    |\n    | C-c C-d d          | help for word at point (fuel-help)                         |\n    | C-c C-d s          | short help word at point (fuel-help-short)                 |\n    | C-c C-d e          | show stack effect of current sexp (with prefix, region)    |\n    | C-c C-d p          | find words containing given substring (fuel-apropos)       |\n    | C-c C-d v          | show words in current file (with prefix, ask for vocab)    |\n    |--------------------+------------------------------------------------------------|\n    | C-c M-\u003c            | show callers of word or vocabulary at point                |\n    |                    | (fuel-show-callers, fuel-vocab-usage)                      |\n    | C-c M-\u003e            | show callees of word or vocabulary at point                |\n    |                    | (fuel-show-callees, fuel-vocab-uses)                       |\n    |--------------------+------------------------------------------------------------|\n    | C-c C-x s          | extract innermost sexp (up to point) as a separate word    |\n    |                    | (fuel-refactor-extract-sexp)                               |\n    | C-c C-x r          | extract region as a separate word                          |\n    |                    | (fuel-refactor-extract-region)                             |\n    | C-c C-x v          | extract region as a separate vocabulary                    |\n    |                    | (fuel-refactor-extract-vocab)                              |\n    | C-c C-x i          | replace word by its definition (fuel-refactor-inline-word) |\n    | C-c C-x w          | rename all uses of a word (fuel-refactor-rename-word)      |\n    | C-c C-x a          | extract region as a separate ARTICLE: form                 |\n    | C-c C-x g          | convert current word definition into GENERIC + method      |\n    |                    | (fuel-refactor-make-generic)                               |\n    |--------------------+------------------------------------------------------------|\n\n### In the listener\n\n    |---------+----------------------------------------------------------|\n    | TAB     | complete word at point                                   |\n    | M-.     | edit word at point in Emacs                              |\n    | C-c C-r | refresh all loaded vocabs                                |\n    | C-c C-a | toggle autodoc mode                                      |\n    | C-c C-p | find words containing given substring (M-x fuel-apropos) |\n    | C-c C-s | toggle stack mode                                        |\n    | C-c C-v | edit vocabulary                                          |\n    | C-c C-w | help for word at point                                   |\n    | C-c C-k | run file                                                 |\n    |---------+----------------------------------------------------------|\n\n### In the debugger (it pops up upon eval/compilation errors)\n\n    |---------+-------------------------------------|\n    | g       | go to error                         |\n    | \u003cdigit\u003e | invoke nth restart                  |\n    | w/e/l   | invoke :warnings, :errors, :linkage |\n    | q       | bury buffer                         |\n    |---------+-------------------------------------|\n\n### In the help browser\n\n    |-----------+----------------------------------------------------------|\n    | h         | help for word at point                                   |\n    | v         | help for a vocabulary                                    |\n    | a         | find words containing given substring (M-x fuel-apropos) |\n    | e         | edit current article                                     |\n    | b a       | bookmark current page                                    |\n    | b b       | display bookmarks                                        |\n    | b d       | delete bookmark at point                                 |\n    | n/p       | next/previous page                                       |\n    | l         | previous page                                            |\n    | SPC/S-SPC | scroll up/down                                           |\n    | TAB/S-TAB | next/previous link                                       |\n    | k         | kill current page and go to previous or next             |\n    | r         | refresh page                                             |\n    | c         | clean browsing history                                   |\n    | M-.       | edit word at point in Emacs                              |\n    | C-c C-z   | switch to listener                                       |\n    | q         | bury buffer                                              |\n    |-----------+----------------------------------------------------------|\n\n### In crossref buffers\n\n    |-----------------+-----------------------------|\n    | TAB/BACKTAB     | navigate links              |\n    | RET/mouse click | follow link                 |\n    | h               | show help for word at point |\n    | q               | bury buffer                 |\n    |-----------------+-----------------------------|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcandre%2Ffuel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcandre%2Ffuel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcandre%2Ffuel/lists"}