Changing Commands with EELEpsilon has many built-in commands, but you may want to add new commands, or modify the way some commands work. We used a language called EEL to write all of Epsilon's commands. You can find the EEL definitions to all of Epsilon's commands in files ending in ".e". EEL stands for Epsilon Extension Language.
Before you can load a group of commands from a ".e" file into Epsilon, you must compile them with the EEL compiler. You do this (outside of Epsilon, or in Epsilon's concurrent process buffer) by giving the command "eel filename" where filename specifies the name of the ".e" file you wish to compile (with or without the ".e"). The EEL compiler will read the source file and, if it finds no errors, will produce a "bytecode" file with the same first name but with a ".b" extension. A bytecode file contains command, subroutine, and variable definitions from the source file translated to a binary form that Epsilon can understand. It's similar to a regular compiler's object file.
Once you've compiled the file, the Epsilon load-bytes command gets it into Epsilon. This command prompts for a file name, then loads it into Epsilon. You may omit the extension. But an easier method is to load the EEL source file, then compile and load it in one step using the compile-buffer command on Alt-F3. See Compiling From Epsilon.
Often a new EEL command won't work the first time. Epsilon incorporates a simple debugger to help you trace through the execution of a command. It provides single-stepping by source line, and you can enter a recursive edit level to locate point, display the values of global variables, or run test functions. The debugger takes the following commands:
To start the debugger, use the set-debug command. It asks for the name of a command or subroutine, providing completion, and toggles debugging for that function. (A zero numeric argument turns off debugging for that function. A nonzero numeric argument turns it on. Otherwise, it toggles.) The list-debug shows which functions have had debugging set.
Compiling a file with the -s EEL compiler flag disables debugging for routines defined in that file. See EEL Command Line Flags for information about the EEL command line options, including the -s flag.
The profile command shows where a command spends its time. When you invoke the profile command, it starts a recursive edit level, and collects timing information. Many times each second, Epsilon notes the source file and source line of the EEL code then executing. When you exit from the recursive edit with Ctrl-X Ctrl-Z, Epsilon displays the information to you in a buffer.
Epsilon doesn't collect any profiling information on commands or subroutines that you compile with the -s EEL flag.
The list-undefined command makes a list of EEL functions that are called from some other EEL function, but have no definition. These are typically the result of misspelled function names.