<p>Factor is a programming language with postfix syntax. The Factor plugin for <ahref="http://www.jedit.org">jEdit</a> makes for a more pleasant development experience. It provides many time-saving features for working with Factor code. This document only explains the plugin. For information on Factor itself, including extensive documentation in PDF format, see the Factor web site: <ahref="http://factor.sourceforge.net">http://factor.sourceforge.net</a>. <p>
<p>The Factor plugin needs to communicate with a running instance of a Factor runtime for most features to work. To set up the external instance, go to <b>Plugins</b>><b>Plugin Options</b>><b>Factor</b>. You will need to supply a full path to the Factor runtime, as well as a path to the image file.</p>
<p>The embedded listener can be accessed by selecting the <b>Factor</b> shell in the Console plugin. The <b>Run current file</b> and <b>Evaluate selection</b> commands can be used to send text from jEdit to the listener.<p>
<p>The <b>Edit word</b> command opens a dialog box where the name of a word can be typed -- while the word is being typed, the possible completions is instantly updated, and selecting one opens the source file containing the definition of that word:</p>
<imgclass="nice-box"src="edit-word.png">
<p>To be able to edit definitions of standard library words, add a phrase like the following to your <code>$HOME/.factor-rc</code>:</p>
<preclass="nice-box"><SPANCLASS="syntax13">"</SPAN><SPANCLASS="syntax13">/home/slava/Factor/</SPAN><SPANCLASS="syntax13">"</SPAN><SPANCLASS="syntax13">"</SPAN><SPANCLASS="syntax13">resource-path</SPAN><SPANCLASS="syntax13">"</SPAN> set
<p>The <b>Word usages at caret</b> command displays a list of words that refer to the word at the caret in the Factor listener window. Clicking on words in the listener shows a popup menu with various useful actions.</p>
<p>Factor files are parsed in a background thread and checked for errors, using the framework provided by the SideKick plugin. Errors are underlined in the text area (and listed in the <b>ErrorList</b> plugin window).</p>
<p>A common error is a missing <code>USE:</code> declaration. The <b>Use word at caret</b> command searches for the word at the caret in all vocabularies, and adds a <code>USE:</code> declaration for the vocabulary to the start of the source file -- in this case, <code>ifte</code> is found in the <code>combinators</code> vocabulary, and the parse error instantly goes away:</p>
<h2class="fancy-heading">Completion and browsing</h2>
<p>The stack effect of the word at the caret is shown in the status bar.</p>
<imgclass="nice-box"src="status.png">
<p>Invoking <b>Plugins</b>><b>SideKick</b>><b>Show Completion Popup</b> displays a popup of possible completions for the word at the caret -- bind this to <code>C+SPACE</code> for quick access:</p>
<imgclass="nice-box"src="complete.png">
<p>The <b>Plugins</b>><b>SideKick</b>><b>Structure Browser</b> displays a list of all words defined in the current buffer:</p>