Lugaru Wolf

Download Epsilon 14 Beta 8

Epsilon 14 Beta 8 is now available for beta testing. Epsilon 14 adds 64-bit executables, directory comparison, and many other features. Changes since Epsilon 13 are listed here. Changes since the first beta version are below. This beta version expires September 1 2020.

Read about moving your customizations from Epsilon 13 (or older) to the new version here. You can install each Windows beta on top of a previous one (no need to uninstall first). On other platforms each beta installs independently; remove the previous one whenever you wish.

Epsilon 14 Beta 8 is available in these formats:

The above packages include full documentation in HTML, Info, and (for Windows versions) WinHelp formats. The manual is also available in PDF format.

Known Issues

Changes between Epsilon 13 and Epsilon 14 are listed separately.

New Since Beta 1

14 B8 In TeX mode, Ctrl-clicking to sync with a previewer no longer interferes with Ctrl-dragging to copy text. And the mode now highlights matching parentheses.
14 B8 Syntax highlighting should be faster in certain cases because Epsilon now groups some requests to syntax highlighting functions in horizontal scrolling mode so they operate on bigger regions at once.
14 B8 Epsilon's macOS startup helper now tries a new method to bring Epsilon's window to the top and give it focus when using XQuartz and Epsilon is invoked from the command line. Its startup helper recognizes a new configuration setting "activate" to disable this if necessary.
14 B8 The message for picking an encoding when a buffer contains Unicode characters now shows the prompt that follows in the echo area.
14 B8 In C++ code, Epsilon now colors C++ "identifiers with special meaning" (override, final, import, and module) as keywords. A bug preventing alignas and thread_local from being colored as keywords was fixed too.
14 B8 Epsilon now parses C++ raw string literals like R"delim(...)delim" correctly.
14 B8 The mouse-select command now returns codes to its caller reporting on the specific type of mouse operation performed, so that other commands may call it to add functionality. A few mouse subroutines now do this also.
14 B7 The Windows installer is now available in a version that doesn't need admin privileges and installs just for the current user. It sets up the configure-epsilon command to likewise not request admin privileges. Both installer versions as well as configure-epsilon now remember the various selections you make and offer them as the default in future runs. They now avoid modifying any custom EPSPATH setting as long as it still contains the install directory. The installer now asks Explorer to refresh its shell icon cache, so it should now update the names of any pinned icons after an update.
14 B7 Epsilon for X11 can now remember and restore its window position. Add the line "Epsilon.recordPosition: 1" to your ~/.epsilon/Xcustomresources file to enable.
14 B7 TeX mode's jump-to-dvi command now handles PDF viewers as well as DVI, via the new jump-to-dvi-extension variable, it now understands mainfile declarations, and TeX mode's documentation now provides detailed instructions on using it with PDF viewers that support SyncTeX to sync TeX code with its output in a viewer in both directions. You can now use Ctrl-Left-click to run jump-to-dvi via the new tex-mouse-select command. And the variables compile-tex-cmd and compile-latex-cmd have updated defaults.
14 B7 NSIS mode now has context help via the new context-help-rule-nsis variable.
14 B6 Epsilon for macOS uses a new startup helper program so that the privacy system in macOS 10.15 Catalina operate properly when Epsilon runs under XQuartz, whether started from its icon or from a command line (but see the manual for full details). There's no longer a separate Epsilon for Terminal download, since the Epsilon app now simply runs as a terminal program when XQuartz is not installed. Epsilon for macOS now requires macOS 10.9 or later.
14 B6 The default color scheme in non-console environments, standard-gui, now uses dark brown instead of black for keywords in C mode and modes based on it, and for function names in Visual Basic mode. You can use Alt-x set-color to change the colors.
14 B6 Epsilon 14 now comes with a smaller Unicode data file that omits some converters for certain legacy East Asian and EBCDIC character sets (just as Epsilon 12 and 13 did), resulting in a smaller download. If you must edit files using such encodings, see this page.
14 B6 Epsilon for X11 will now read any custom X11 resource definitions you put in a file named ~/.epsilon/Xcustomresources.
14 B6 The draw-column-markers variable in Epsilon for Windows now allows defining up to 100 column markers.
14 B6 On macOS, Epsilon now starts each interactive subprocess shell as a login shell. This is needed because in macOS there often isn't any parent process shell running as a login shell (as there would be in other Unix-like operating systems), so login tasks like initializing the environment would not be performed otherwise.
14 B5 When Epsilon was using horizontal scrolling to display a buffer with syntax highlighting, extremely long lines could make display refreshes very slow. Redisplay should now be faster in cases like a multi-megabyte single-line file using syntax highlighting.
14 B4 Epsilon for macOS is now distributed in two package types. One requires XQuartz and triggers macOS 10.15 Catalina's privacy prompt the first time you try to access a private folder like Downloads, Documents, or Desktop. The other can run as either a Terminal version if XQuartz isn't installed, or an XQuartz version if it is, but neither can easily access such private folders. [Note: Package types were combined in beta 6.]
14 B4 Context help on Shift-F1 uses mode-specific variables that say how to provide help; one type opens a URL in a browser. Such definitions can now use new shorthands to search for results on a specific website, and optionally, go immediately to the best match. These shorthand codes use the new context-help-site-search and context-help-site-search-lucky variables. Many context help variable definitions were updated so now they should usually go directly to an appropriate page. Code in .m and .js files now uses specific rules instead of the generic C mode rule. The context-help-rule-objc variable was added for the former.
14 B4 When Epsilon for Windows interprets shell variables within file names, it now recognizes "Documents" as a synonym for the internal Windows shell folder name "Personal". Both refer to the current user's Documents directory.
14 B4 Setting the epsilon-manual-port variable to zero redirects requests for Epsilon's manual in HTML form to the Lugaru website, instead of a local help server. But now Epsilon selects the correct version of the manual, based on its own version number, instead of using the most recent non-beta manual version. The value of -1 now means to use the most recent non-beta version of the manual (in case a version-specific manual is unavailable). The HTML manual now includes its version number on every page.
14 B4 Epsilon for Windows now moves and resizes itself at startup if needed to ensure it's visible on at least one monitor. The new -vf flag controls the details.
14 B4 The Windows-style find/replace dialog in Epsilon for Windows now remembers its previous position relative to Epsilon's main window.
14 B4 Epsilon for macOS now has a new icon (matching its Windows icon) with higher resolution.
14 B4 Epsilon's concurrent process startup script now creates the appropriate settings for zsh (which is now the default shell in macOS as of version 10.15 Catalina).
14 B4 Reading a file into a process buffer now sets its type point to the end, to keep Epsilon from unexpectedly executing the file contents.
14 B4 The EEL subroutine parse_url() now returns 1 ("valid") for a URL with only a service name, like http://, but no host name. Callers can reject those by checking if the host name it fills in is empty.
14 B3 Epsilon now completes on environment variable names in the process buffer. The process-completion-style variable has a new bit 16 which can be set to disable this.
14 B3 Tagging and displaying the current function's name work better with C++ template syntax. C, C++, and Java keywords added in more recent versions of those languages are now colored as keywords.
14 B3 Epsilon now tries to set the buffer directory of ssh and telnet buffers to a suitable scp or ftp URL, so that commands like find-file will prompt with a more useful default path. The new net-prompt-get-directory and net-prompt-pattern variables control this.
14 B3 The 64-bit version of Epsilon for macOS is now code-signed, and now requires macOS 10.9 or later. This required rearranging the file structure inside Epsilon's app bundle, and as a result, Epsilon's default search path for its files has changed on macOS.
14 B3 EEL's -v flag is more verbose about which specific files it's reading.
14 B3 Epsilon now recognizes that it should use shell mode for more types of files.
14 B3 The mouse now uses a pointer cursor for menus on non-Windows systems, and supports a few more cursor types.
14 B3 EEL programmers can use the new count_matches_in_buffer() subroutine.The concur_shell() primitive has a new flag for disabling its current-directory extraction feature.
14 B2 At file prompts, in addition to using environment variables, there are now shorthands for Windows shell folders and Epsilon's customization directory. Plus you can now define your own custom file and directory shorthands in a file. The file-interpret-env-vars variable has a new default and more bits defined, and the get_complete_environment() primitive, renamed get_substitution_variables(), now takes a flag argument.
14 B2 Epsilon can now search a file's hierarchy for .epsilon_vars files (see use-file-variables's new 16 bit to enable), and its syntax for file variable settings now permits (very simple) expressions, so you can (for example) set one indenting variable to be a multiple of another.
14 B2 The new file-variables-search-limit lets you set how close a "Local Variables:" line must be to the end of the file for Epsilon to recognize it. By default it must be within 3000 characters.
14 B2 The new grep-ignore-file-max-size variable limits the size of files grep will read to 2 GB.
14 B2 Epsilon's Linux packages now install by default to /opt instead of /usr/local. Epsilon's default search path now includes both locations.
14 B2 The Linux setup script now installs an updated Epsilon icon in various sizes into window manager menus.

Bug Fixes Since Beta 1

14 B8 Epsilon now recognizes vbash and similar names as bash-style shell names.
14 B8 Grep and file-query-replace didn't interpret a file pattern with extended file pattern characters like {} relative to the current buffer's directory, even when the setting for grep-prompt-with-buffer-directory said to.
14 B8 Epsilon for Unix no longer exits unexpectedly if a network operation during file name completion requires a password to be entered, instead displaying an error that it can't prompt for a password when it's already prompting for a file name.
14 B8 Completion on environment variables in a concurrent process buffer now works properly in Unix environments.
14 B8 Epsilon for Unix no longer gets stuck when a flag like -add is used to send a URL to Epsilon, and retrieving the file requires Epsilon to prompt for a password. An scp or ftp URL that names a directory must now end with a / when specified on Epsilon's command line for correct handling.
14 B8 Epsilon's Windows uninstaller performs additional checks to prevent certain issues when there are multiple separate Epsilon installations on the same PC.
14 B8 Previously, using the EEL profiler could make Epsilon crash. Epsilon has some new tests to detect certain kinds of internal bugs.
14 B8 Tagging in C++ no longer gets confused when a numeric literal in an initializer is formatted with ' characters, like 123'456'789.
14 B8 Epsilon for Windows could crash if its window was resized while it was busy performing a task.
14 B8 Epsilon for Unix may write a log file in ~/.epsilon/epsilon.log if it detects internal errors. Now, if multiple running instances of Epsilon all try to open log files, they choose a different name for each, instead of overwriting the same file.
14 B8 Epsilon for macOS run with the -wait flag now hides a spurious warning message that the open command produces in certain cases.
14 B8 With many X11 window managers, Epsilon's icon was missing from the task bar.
14 B7 Epsilon for macOS no longer unexpectedly runs in single-instance mode when invoked from the command line. Its startup helper program can now be configured to control when it uses single-instance mode, and has various other new configuration options. Various bugs in the helper program were fixed.
14 B7 The EEL compiler didn't correctly handle initializers for arrays of structures when the structure size wasn't a multiple of sizeof(int).
14 B7 Files with a #! line that runs Node.js are now recognized as JavaScript.
14 B7 The EEL debugger's r command now preserves the current key, buffer, and similar values across the recursive edit, so the EEL code being debugged will see the values it expects.
14 B7 Epsilon for Windows no longer installs the WinHelp version of its documentation into the wrong directory.
14 B7 The find-linked-file command on Ctrl-x Ctrl-l now handles file names that contain the wildcard characters comma, square bracket, curly brace, and semicolon by opening the named file if it exists, or interpreting the name as a wildcard pattern and displaying a dired listing if it does not.
14 B7 On Unix-like systems, the check_file() primitive no longer returns CHECK_PATTERN for file names that contain [ but no * or ? characters. These are now treated like any file name with no special characters, as in Epsilon for Windows. (See the is_pattern() primitive.)
14 B7 Syntax highlighting bugs in various modes were fixed, and a new method for locating some kinds of syntax highlighting bugs was added, using the new want-debug-coloring variable.
14 B6 Various grep subcommands now work properly when a single match spans multiple lines in the grep buffer.
14 B6 The set-font command was failing due to a PATH issue when Epsilon was invoked from an icon under macOS.
14 B6 Indenting is no longer confused by C++17's "if constexpr ()" syntax.
14 B6 Epsilon no longer displays the current function name using :: instead of . between identifiers in Java files.
14 B6 Tagging now works in R mode.
14 B6 Perl heredoc syntax was updated to recognize the ~ modifier added in Perl 5.26.
14 B6 The EEL compiler didn't correctly handle an alignment issue involving arrays of structs.
14 B6 The push-cmd-unix-macos-interactive variable has a new default to deal with a zsh shell grammar difference.
14 B5 A regression in beta 4 made pressing an arrow key unhighlight a region that was started through any method other than pressing Shift while using arrow keys.
14 B5 HTML/XML paragraph filling no longer produces very short lines in certain cases where the html-auto-fill-combine or xml-auto-fill-combine variables restricted breaks after short element names, and the following attribute was longer than the fill width.
14 B5 On macOS 10.15 Catalina, Epsilon's optional esetup script had multiple issues.
14 B5 Info mode now ensures its top-level Info node includes a line for Epsilon, even if Epsilon's Info file hasn't been installed system-wide. This version also fixes an issue with Info not finding Epsilon's info file on some platforms, and searches for info files in more places on Unix.
14 B4 Numeric color definitions in an .ecm file from a previous version were misinterpreted.
14 B4 Completion didn't always work properly on responses with spaces in them at non-filename prompts.
14 B4 Unicode characters sent to Epsilon for Windows by programs like AutoHotKey were misinterpreted.
14 B4 When you drag Epsilon for Windows to a different monitor, Epsilon now resets its size to work around a Windows 10 high DPI scaling issue.
14 B4 Using Shift with arrow keys to select, and then killing the region, would sometimes leave Epsilon still selecting, even if you'd released Shift.
14 B4 When a buffer has no newline at the very end, the blank space to the right of the last character is now painted with the same color and attribute as subsequent blank lines, instead of the color and attribute of the last character in the buffer.
14 B4 Parsing for compiler error messages now permits parentheses in a file name in an additional case.
14 B4 Shell mode now colors $((...)) correctly.
14 B4 On macOS, Epsilon's startup script no longer fails when XQuartz is not installed and Epsilon's app name contains spaces (which in version 14 it now does, by default). And the script now tries to close its own Terminal window in this case, even if Terminal's preference setting requires users to manually close all terminal windows.
14 B4 Some bits in the misc-language-fill-mode variable for recently-defined modes no longer conflict with earlier bits.
14 B3 The import-customizations command now retrieves customized colors in a different way and records them in a separate EEL file, fixing an issue with previous betas. And it now works properly under macOS.
14 B3 Epsilon's documentation server now works around a Windows 10 issue that kept pages from displaying sometimes.
14 B3 The export-colors command no longer discards font styles.
14 B3 Spell mode's interface to the macOS spell engine now works again.
14 B3 Epsilon's setup script for Unix-based systems should now work properly with more shells.
14 B3 In Epsilon for Windows, the color selection dialog no longer starts off with the wrong color.
14 B3 Epsilon could crash when creating a new buffer.
14 B2 Double-clicking the mouse would often appear as a single click in the 64-bit macOS version.
14 B2 The dynamically linked Linux version of EEL failed to start due to a missing rpath.

Last Updated: 27 June 2020