Lugaru Wolf

New in Epsilon 12

Epsilon 12 was released on 15 October 2003. This page describes its new features. You can also see the features we added in Epsilon 6.0, Epsilon 6.5, Epsilon 7, Epsilon 8, Epsilon 9, Epsilon 10, Epsilon 11, Epsilon 13, or Epsilon 14.

Epsilon 12 includes these operating system versions:

All versions above share most customization files. Each order also includes older versions of Epsilon that run under OS/2 or DOS.


New Features

Highlights of Epsilon 12 include Unicode support, enhancements in many language modes plus new modes for PHP and VHDL, improved pull completion and commenting commands, font styles, session file and dired enhancements, ssh/scp support, new regular expression options, and many other searching improvements.

Previous versions of Epsilon could be customized by setting variables and then writing a new state file. Epsilon 12 introduces a new customization method that lets it save most types of customizations in a version-neutral format. Customizations saved using this new method should automatically work in future versions, without any special upgrade procedure. The new import-customizations command uses this method to make it easy to import your customizations from Epsilon 8 and later.

Unicode Support in Epsilon 12

Edit Unicode files.

Epsilon can now edit and display Unicode files. Buffers with Unicode use 16 bit characters. Epsilon knows how to translate between its native Unicode format and dozens of encodings and character sets such as UTF-8, ISO-8859-4, or KOI-8.

Epsilon autodetects the correct encoding for files that start with a Unicode signature ("byte order mark"), and for many files that use the UTF-8 or UTF-16 encodings. You can also specify a particular encoding, or convert text to or from any encoding Epsilon knows about.



Language-Specific Enhancements in Epsilon 12

Epsilon includes new modes for the PHP and VHDL programming languages, as well as Windows/DOS batch files. Many existing modes have been enhanced:

More Programming Features in Epsilon 12

The pull-word command on Ctrl-<Up> and F3 can now retrieve completions from the current tags file, when there are no more completions earlier in the buffer. It can pull text at prompts, so you can use it to easily search for more instances of a word, without typing the whole word or navigating to it first. It can pull text when point is inside a word, making editing easier. And it now skips adjacent duplicate words.

Commenting a region.

Use the new comment-region command on Ctrl-C Ctrl-R to comment out a range of text, using commenting rules for the current mode on all lines in the region. With a numeric prefix argument like Ctrl-U Ctrl-C Ctrl-R, it uncomments lines in the region.

In some modes Epsilon now reindents the current line when you press <Enter>, in addition to indenting the new one.

Alt-Q now knows how to fill comments in more languages. Auto-breaking of comment lines is now enabled in more languages. A new variable auto-fill-comment-rules lets you customize when and how Epsilon breaks comment lines.

You can now select which types of items (functions, variables, macros, etc.) Epsilon will tag, and which the list-definitions command will display.

The next-error command can now be set to work with telnet or ssh (see below) buffers, so as it parses error messages from the compiler running on the server, it translates each file name into a URL Epsilon can use to retrieve that files. See Internet Support.

Display Enhancements in Epsilon 12

Epsilon now uses bold, italic, and underlined styles of the current font for particular display elements like programming language comments.

Epsilon for Unix now displays dialogs for setting the font and screen colors under X, similar to the Windows version. It remembers the selected font from session to session.

The two variables mode-start and mode-end that permitted customizing parts of the mode line have been replaced by a new variable mode-format. The new variable makes it possible to fashion some mode line formats that weren't possible before, by specifying where elements like the mode's name, the buffer name, or the current function's name are to go.

When Epsilon displays file names in mode lines or in most messages, it now abbreviates them if needed to fit the available space, ensuring that other parts of the mode line or message are visible.

Prior to this version, the Win32 Console version of Epsilon always displayed buffers using an OEM character set. Now under Windows NT/2K/XP, it can use a Unicode-based character set instead.

File Enhancements in Epsilon 12

Listing Unix home directories.

Epsilon now records dired buffers in its session file, and restores them when you restart Epsilon later. It can also optionally record and restore files and directories accessed via URL's in its session file.

Epsilon for Windows can now complete on UNC server and share names like \\myserver\myshare, and on stream names, for files on NTFS file systems that have multiple streams.

Epsilon for Unix can now complete on user names following a ~, and treats such names somewhat like a separate hierarchy of symbolic links, so that, for instance, a dired of ~* produces a list of home directories of each user.

If you set up Epsilon to use scp connections to access remote files (see below), it can complete on such names.

Epsilon now uncompresses files with a .gz or .bz2 extension as it reads them, and in commands like grep.

Epsilon's hex mode now makes it easier to search for some literal text by automatically searching in the original buffer when you press Ctrl-S or Ctrl-R. You can now use the G command to go to an offset specified in decimal, octal, or binary, not just hexadecimal.

When Epsilon displays a list of possible completions for a buffer name, it now includes the name of each buffer's associated file, if any.

Epsilon recognizes new file variables to set the fill column or the compilation command.

Directory Editing Changes in Epsilon 12

Attributes and Hidden Files in Dired.

Dired mode now hides files or directories whose names start with a period. The - key in dired mode toggles hiding.

Dired mode now includes an A subcommand to more conveniently set a file's attributes (Windows) or permission bits (Unix).

Epsilon for Windows can now display the file attributes Hidden, System, Read-only and Archive in its dired listings. See the dired-layout variable.

The V (view) subcommand now works under X by running the external program specified for that file's type by your Gnome settings (if Gnome files are installed).

Dired can now delete directories that aren't empty, or entire directory hierarchies. It asks for confirmation first.

Dired can now delete read-only files under Windows. Under both Windows and Unix, Epsilon now asks for confirmation before deleting a read-only file (except when deleting one in a directory to be deleted itself).

The ! key in dired to run a command on a file now looks for a * character in the command line it prompts for. If there is one, the current file name replaces it; otherwise the current file name is appended to the end of the command. Also, a command line ending in & now signals Epsilon to run it asynchronously; the ! key normally runs commands synchronously.

Regular Expression Changes in Epsilon 12

Regular expressions can now match characters based on one of hundreds of named Unicode properties. For instance, match any Cyrillic character by writing <p:Cyrillic>, or any hex digit by writing <p:hex-digit>. You can also use Unicode character names like <Pound Sign>.

You can build character classes using subtraction and intersection. For instance, <alpha|1-5&!x-z> means any alpha character or digit from 1 to 5, but not x, y, or z.

Search using Syntax Coloring.

Regular expressions can match based on a character's color via syntax highlighting. <^c:*comment>printf finds uses of printf that aren't commented out. <[c:c-string>" finds " characters that start a string in C mode, ignoring those that end it, or appear quoted inside it, or in comments or other places.

The new regular expression syntax <h:0d 0a 45> makes it easier to search by hex codes. That example is equivalent to the older syntax <#0x0d><#0x0a><#0x45>.

In a regular expression replace, the replacement text can now use the syntax #U to force the rest of the replacement to uppercase (including text substituted from the match using syntax like #1). Using #L or #C forces the remaining text to lowercase, or capitalizes it, respectively. Using #E marks the end of such case modifications; the following replacement text will be substituted as-is. For instance, searching for "(<word>+) by (<word>+)" and replacing it with "#L#2#E By #U#1" will change the match "Two by Four" into "four By TWO".

When you don't use the above syntax, replacing preserves the case of each match according to specific rules, which you can now modify using the new replace-by-case variable.

Regular expression replacement text can now include characters specified by name, using the syntax #<Newline>.

Regular expression replacing now works with very long replacement text; previously it was limited to 1000 characters.

Other Searching Enhancements in Epsilon 12

Replacing within a Rectangular Region.

Epsilon for Unix can now search manual pages with the new search-man-pages command. This also works in the Cygwin environment under Windows.

Epsilon can now restrict searching and replacing to a highlighted region (including rectangular regions).

In Info mode, searching with Ctrl-S and Ctrl-R can now continue the search into other nodes when there are no more matches in the current node.

The grep and file-query-replace commands now skip over files whose names match a customizable regular expression pattern, or which are actually devices or other special files (which can also be customized).

You can now configure what grep does when a file has been modified on disk or tell it to include the file's timestamp with each match.

Internet-related Enhancements in Epsilon 12

Secure Remote Editing.

Epsilon can now access remote files via scp, using external sftp or scp programs. Once scp support has been set up, features like dired (including directly copying between local and remote files), creating and deleting directories and completion all work. Ssh support, using an external ssh program, is also available.

Telnet buffers now interpret certain ANSI escape sequences for setting colors, and bare Ctrl-M characters that indicate overtyping, as well as a command history.

When Epsilon recognizes password prompts in telnet and process buffers, the regular expression it uses for this purpose can now be customized.

You can now set Epsilon to log the exact HTTP request it sends to access http URL's, or substitute your own HTTP requests for those Epsilon sends.

Customizing Enhancements in Epsilon 12

Epsilon can now save many types of customizations (variable settings, colors, macro definitions, and so forth) in an einit.ecm file, and automatically load them each time you start Epsilon. This method of saving your customizations makes updating easier, because it records customizations in a version-neutral format (compared to recording customizations in a state file).

There are a number of ways to add entries to an einit.ecm file.

Importing Customizations.

With any method, you can edit the einit.ecm file of customizations at any time. If you set record-customizations nonzero, it's not necessary to remember to save your state or otherwise preserve any customization; that becomes Epsilon's default behavior. Instead, if you set a variable or change a color and decide you don't want it preserved for the next time you run Epsilon, remove the corresponding line from your einit.ecm file.

You can use the clean-customizations command to prune your customization file, removing duplicate or unnecessary settings.

An einit.ecm file uses Epsilon's command file syntax, which has some enhancements in this version. Each binding line can now specify a range of keys, not just one. And it's now possible to execute many EEL subroutines from a command file and pass them parameters. See Command Files for details.

Other Changes in Epsilon 12

Epsilon now supports multiple process buffers under Windows NT/2K/XP, as under Unix.

At many prompts, the Alt-g key now inserts an alternative default response. For instance, in a search and replace, Alt-g when entering replacement text inserts the original search text. Alt-g at many file prompts inserts the name of the current file.

Epsilon's notion of bindable keys has been redesigned. There are now many more possible key combinations. Epsilon now uses the concept of generic versus specific keys; for instance, the specific key <Backspace> is also generically a Ctrl-H key. If you bind this key to a new command, Epsilon will ask if you want to bind only the <Backspace> key, or all key combinations that generate a Ctrl-H.

The new variable alt-numpad-keys lets you set how Epsilon for Windows treats the Alt versions of numeric pad keys. Previously the program-keys command set this.

The new convenience command bind-last-macro combines name-kbd-macro and bind-to-key, and also provides a default name for the new macro. It replaces name-kbd-macro on Ctrl-X Alt-N.

The Unix set-color dialog.

The new command run-with-argument provides a simple way to pass a yanked numeric argument to a command, or one that you want to specify in a different base like hexadecimal.

With a numeric argument, the eval command now inserts the result of its computation into the current buffer instead of displaying it.

If you run the exit command with a numeric argument (Ctrl-U Ctrl-X Ctrl-C, for instance), Epsilon doesn't save any modifications to fonts, window sizes, and other settings it normally preserves when you exit.

Brief mode has many small changes that make it mimic Brief more closely. For instance, the new commands undo-by-commands and redo-by-commands group primitive undo operations in a way more similar to Brief.

Epsilon's -r flag now accepts an optional text argument following the command name, which it passes to the called EEL subroutine.

The new insert-date command inserts the current date. The new date-format variable controls its format, and the date format Epsilon uses in certain other contexts.

In Epsilon for Windows, when you click on a window to switch to Epsilon, it no longer sets the cursor where you clicked.

Epsilon for Linux is now available packaged in .deb and .rpm formats for the convenience of Debian and Red Hat Linux users.

More Customization Options in Epsilon 12

There are many new variables for customizing Epsilon:
auto-save-tags
controls whether Epsilon automatically saves a tag file after modifying it.

bufed-show-absolute-path
lets you set the bufed command to display the absolute path of each file.

common-open-use-directory
lets you change how the common file dialogs in Epsilon for Windows treat the current directory.

compare-windows-ignores-space
has new options for completely ignoring whitespace, not just equating one run of whitespace characters with another.

cygwin-filenames
has more options for supporting Cygwin's Unix-style pathnames under Windows.

file-date-skip-drives
lets you disable checking for modified files based on the type of drive (removable, network, etc.) a file is on, in Epsilon for Windows.

file-pattern-rules
modifies how Epsilon for Unix handles symbolic links when it expands wildcard file patterns.

indent-preprocessor-contin
changes how C mode indents certain preprocessor continuation lines.

list-definitions-live-update
controls whether the list-definitions command updates the window behind its dialog as you move around in the dialog.

process-completion-style
lets you customize how completion works in the process buffer. You can select Unix-style completion (the default), Windows-style completion as in cmd.exe, and other options.

process-prompt-pattern
lets you configure Epsilon for Windows to understand process buffer current directory settings if you've changed the default command prompt.
process-warn-on-killing
lets you change how Epsilon behaves when you try to kill a buffer with an active process.

recall-prior-response-options
lets you set Epsilon so an arrow key at prompts moves to a previous or later response without displaying a list of the responses.

recall-response-selected
lets you set whether such prior responses will be highlighted.

resize-rectangle-on-tab
sets whether pressing <Tab> or Shift-<Tab> while defining a rectangular region resizes the region without changing the text, by positioning to the next tab stop. By default, these keys shift the region.

search-defaults-from
controls how searching commands provide a default search string.

search-positions-at-start
sets whether nonincremental searching always positions to the start of a match, regardless of the direction.

typing-hides-highlight
controls whether a highlighted region remains on when you type text.

yank-line-retains-position
sets how Epsilon positions point when you yank a line region.

Epsilon 12 also includes many enhancements to the EEL extension language, as well as various changes due to Unicode support, and a variety of new and changed EEL functions. There are also many other minor improvements throughout the editor. Place your update order now.


Last Updated: 20 October 2020