### Mined features

This is a rather extensive listing of mined features. If you just want to try the editor, you may skip to the download page and consult the mined manual for detailed instructions.

  - Unicode support and features
  - CJK support
  - 8 bit encoding support
  - Versatile terminal feature support
  - User interface
  - Screen interaction
  - Text editing features
  - Search functions
  - Secure text and file handling
  - Other useful features
  - Operating environment and portability

#### Unicode support and features

- Works with UTF-8 text mode terminals or windows like xterm.
  See also the Unicode howto with information on how to set up a UTF-8 terminal.
- Supports independent mix of text encoding and terminal encoding; can edit text in any supported encoding in any terminal encoding.
- File encoding auto-detection (Latin-1, UTF-8, UTF-16, East Asian encodings). UTF-16 encoded files with BOM or without BOM will be handled transparently and written back in UTF-16.
- Editing of mixed encoding files (useful e.g. for mailboxes); online switching of character encoding interpretation.

- Handles single-width and double-width characters (works with dual-width Han fonts; xterm 145 or newer recommended).
- Complete handling of combining characters (display, edit, search, input support, ...).
  Partial editing and optional separated display mode.
  Taking care of isolated combining characters (after line beginning or TAB character) and new Unicode combining characters (which the terminal does not handle yet).
- Transparent handling of illegal UTF-8 sequences, with visible indications.
- Optional handling of Unicode line ends (line and paragraph separator).
- Display support in non-Unicode terminals: Characters that cannot be displayed are substituted by a representation using their base character according to Unicode decomposition.

- Mnemonic input support (RFC1345 with completions to cover Unicode with generic accent mnemonic patterns, HTML, TeX and other mnemos supported).
- Extensive accented character input support, including multiple accent prefix keys, covering frequent accents of all Latin-based languages (macron, breve, dot above, ogonek, caron, stroke).
- Support for Greek (monotonic and polytonic).
- Support for Cyrillic accented characters.
- Special input support supplements for Vietnamese multiple accented characters, including composing precomposed characters (e.g. with one accent) with further accents, working in all text encodings.
- Numeric input support, conforming to ISO 14755.
- Interactive conversion support to or from Unicode.
- Enhanced character information display, including character code, Unicode value and a configurable selection of Unicode script, Unicode character name, Unicode decomposition, character input mnemonics. Available in all text encodings.
- Configurable smart quotes (automatic replacement of entered keyboard quotes into suitable typographic quotation marks), applicable in all text encodings. Automatic quotation marks style detection on file loading.
- Smart dashes and smart arrows for various styles.
- Bidirectional terminal support (for handling right-to-left scripts), including support for Arabic ligature joining (LAM/ALEF).
- Optional "poor man's bidi" mode (basic input support for right-to-left scripts on non-bidi terminals).
- Input methods: Keyboard mapping for input support of non-Latin scripts on Latin keyboards (popular CJK input methods, and mappings for Greek, Cyrillic, Hebrew, Arabic, Vietnamese and Thai input methods are pre-configured, others can be added).
  Keyboard mapping supports multiple choice mappings by offering a "pick list" (selection menu) with configurable function of the space key; characters in the pick list being sorted by relevance of Unicode ranges.
  Radical/stroke lookup input method for Han characters supports especially occasional Han character input for not CJK speaking users.
- Highlighting (colouring) of certain Unicode Script ranges (compile-time configurable, Greek and Cyrillic preconfigured).

- Supplemental scripts `uterm` and `umined` to invoke a best-choice configured Unicode terminal window, optionally with mined running in it.

#### CJK support

- CJK input methods are supported using the generic keyboard mapping mechanism including selection menus for multiple choice mappings. Further keyboard mappings or CJK input methods can be added by compile-time configuration.
- Han character information with description and pronunciations of CJK characters as listed in the Unihan database can optionally be displayed while browsing text or input method pick lists.
- Major CJK encodings (mainly double-byte encodings for Chinese/Japanese/Korean character sets) are supported (handled in any terminal encoding). For Japanese, the JIS character codes that map to two Unicode characters are supported.
- CJK encodings are auto-detected. The encodings to be auto-detected are configurable.
- Combining characters are supported for GB18030 and Japanese, including partial editing and optional separated display mode.

#### 8 bit encoding support

- Large number of 8 bit encodings supported that appear to be in use or unique for a region.
- Encoding menu is structured with sub-menus to provide a concise menu selection feature.
- Combining characters are supported (Vietnamese TCVN, Thai, ISO Arabic, Mac Arabic, ISO Hebrew, Windows Hebrew), including partial editing and optional separated display mode.
- Handling of combining text characters is properly coordinated with the set of combining characters supported by the terminal.

#### Versatile terminal feature support

- Auto-detection of UTF-8 terminal encoding and UTF-8 terminal features (different width data versions, handling of double-width, combining and joining characters).
- Auto-detection of CJK terminal properties (handling of non-EUC code points, GB18030, 3-byte and 4-byte encodings). Auto-detection of kterm encoding.
- Auto-detection of 8 bit terminal support for combining characters.
- Standard-comformant but yet flexible locale configuration for both text and terminal encoding.
- Interoperable with a large number of popular and legacy terminals with respect to display features and function key detection, including detection of shifted function keys (Shift, Control, Alt), distinction between (often redundant) small and large keypads where possible.
  Application of specific workarounds and conditional usage of features (even version specific).
- Applying computed dim screen attribute for line indications (in xterm).
- Optional 8 bit character input and output support for antique character set switching 7-bit terminals.

#### User interface

- Intuitive and easy operation. No modes. Intuitive cursor position handling, no weird limitations (e.g. at line-end) or insert/append confusion.
- "Geometric" control-key layout for basic cursor movements (classic "WordStar"-like navigation). (Of course you can also use cursor keys.)
- Use of a "HOP" key which amplifies any subsequent movement command (and some other commands) in an intuitive sense. This way, a lot of functions can be achieved quickly without remembering as many control or function keys. HOP and function key assignment to numeric keypad such that most frequently used functions are easily available.

- Dedicated Keypad assignment features:
  - Central placement of HOP key.
  - For the best benefit of keypad usage, frequently used copy/paste functions are easily accessible on keypad keys.

      7 Mark | 8 ↑ | 9 PgUp
      4 ← | 5 HOP | 6 →
      1 Copy | 2 ↓ | 3 PgDn
      0 Paste | . Cut

  - As there is often a conflict between the mined keypad assignment (propagated as best benefit of keypad usage, see above) and commonly expected function assignments of some keypad keys, mined tries to conciliate this issue as follows:
    - Alt-Home/End/Del is mapped to the more common Home/End/Del function assignments (line navigation and character deletion).
    - Mined assigns different functions to the Home/End/Del keys on the numeric keypad and the similar keys on the small keypad (whenever possible with the terminal) in order to avoid the waste of resources by the usually redundant mapping of these two keypad blocks.
    - The `-k` option switches keypad function assignments:
      Home/End/Del of the numeric keypad invoke line navigation and character deletion.
      Alt-Home/End/Del invoke the paste buffer functions.
      Also small keypad Home/End/Del keys are exchanged accordingly.
    - Using Del without a paste buffer gives an additional hint on alternative usage.
    - Regardless of `-k` mode, Ctrl-Home/End/Del is mapped to the line navigation and character deletion functions, while Shift-Home/End/Del is mapped to the paste buffer functions.
    - Note: Keypad function assignments as described depend on terminal support to distinguish all involved keys and modifiers which is unfortunately not always the case.
      Terminal support for proper distinction of different keypads and modified keys may be enhanced by appropriate terminal configuration, see the manual section on Keypad configuration.
- Two-key commands (starting with escape key) for less frequent functions.
- Text position stack to go backward and forward along text positions after search and other operations.

- Mouse control available for all versions (Unix and DOS).
- Pull-down menus, flag menus with marked options, and a quick pop-up menu for text-position related functions.
  Menu navigation and control with mouse (click / drag or scroll wheel) or keyboard.
  Menus structured with subtitles, nice configurable menu appearance.
- Scrollbar.

- Configurable visible indications of different line-end types (Unix/DOS/Mac/Unicode line-ends, paragraphs) and TAB characters. TAB width can be toggled online.
- HTML syntax highlighting distinguishes HTML tags, HTML comments and JSP.
- Online help; optional help status line of (shifted) function key assignments.
- View only and restricted modes.

#### Screen interaction

- Perfect responsiveness to terminal/window size changes. On resizing the window, mined will immediately adjust and update its display – the text cursor position will stay where it was. Resizing also works while prompting for input (e.g. search text).
- Screen output starting from current position and growing to the top and bottom – on slow (e.g. remote) terminal connections this gives the user a quick visual focus on the cursor position and provides better orientation when paging or searching.
- Display of filename and modification status in window header line and icon.
- Automatic adaptation of Backspace and Delete functions to user preference as set in the environment (stty); additional configuration options.
- Function key sequences for many common terminal types are always activated (vt100, vt100 application mode, Sun, various xterm settings, Linux console, HP and Iris workstation X windows, PC keyboard). The operating environment that is supposed to handle terminal-specific input setup (termcap/terminfo) is often poorly configured – with explicitly coded sequences much more function keys can be recognised than other applications can; also in many situations of remote operation the mined approach works better.
  Configuration option to select among ambiguous function key sets.

#### Text editing features

- Multiple paste buffers (emacs-style).
- Auto-indentation of new lines (cloning white space of current line).
  Auto-indentation is automatically suppressed to support unmodified terminal/mouse copy and paste (by heuristic detection of input speed).
- Automatic Back Tab function to revert to the previous matching indentation level ("undent" function).
- Tab expansion option (expands Tab input to space characters).
- Structure input support for indented pairs of parentheses. Also for Javadoc frames.
- Word/line wrap with left/right margins and first line indentation. (Uses either empty lines or blank/non-blank line ends as paragraph indications.) Optional memory of word-wrap margins between mined invocations.
- Word/line wrap justification applies auto-indentation with heuristic detection of numbered items and program source comments.
- Header line underlining.

- Cross-session paste buffer that enables Copy/Paste between different invocations of mined (also subsequently or remotely, and with some configuration also in a heterogenous network).
- Copy/Paste/File write functions with optional append mode.
- Optional Unicode paste buffer mode with implicit conversion.
- Multiple text position markers.
- Marker stack for quick return to previous text positions.

- Input support for HTML tags and attributes (two options).
- Case conversion function handles full Unicode range, including special cases (like multiple character mappings, conditional mappings). Shift-F3 cycles casing of a word between all small, title case (beginning capital), and all capitals, using Unicode title case characters for the first character when appropriate. For Japanese script, it toggles the word between Hiragana and Katakana. Unicode-based case mapping is applicable in all text encodings.
- Binary transparency including simultaneous handling of different line end types, null characters, transparent splitting of overlong lines, and transparent handling of illegal UTF-8 sequences.
- Optional password hiding, automatically selected with "hidden" files.
- Optional emacs command mode.
- Optional WordStar command mode.
- Optional pico command mode (alpha).

#### Search functions

- Search/replace with optional interactive confirmation.
- Search and replacement patterns can contain embedded newlines.
- Search function for identifier at current cursor position and for identifier definition (using tags file), also across different files, with the option to return to the previous position, even across files.
- Search function for matching parenthesis.
- Search function for matching HTML tags and matching source program structures.
- Repeat function for the two previous search operations.
- Startup search expression option on command line.
- Startup option for line number positioning.

#### Secure text and file handling

- Consequent prevention of loss of data by mistake or error:
  - In any case of file writing or other text saving problem mined will continue the editing session instead of exiting.
  - No external file other than the original source of the text being edited will be overwritten without confirmation by any text or buffer save operation.
  - No accidental quit without prompting for any unsaved changes.
  - In the case of an external interrupt, panic handling saves the text to a panic file if possible.
- All file handling errors are reported quoting clear error indications (in contrast to the cryptic messages of many classic Unix tools).

#### Other useful features

- Optional memory of last cursor position when a file save command is issued, automatic re-positioning in next editing session.
- Integration of version control systems: checkout and checkin commands available from File menu.
- Print function that works in all text encodings. Uses paps (a Pango printing script) or uniprint (from yudit).
- Unicode printing support in Windows (cygwin or djgpp version) using `notepad /p`.
- Change of file name / current directory association while editing.
- Editing within pipe option (Unix version).
- Suspend function (like ^Z) with autosave.
- Unix/DOS/Mac line-end handling and conversion options.

#### Operating environment and portability

- Runs on many platforms: Unix (Linux/Sun/HP/BSD/Mac and more), DOS (djgpp), Windows (cygwin, Interix), including legacy systems (old Unix systems). Was also ported to VMS, EMX, and even still compiles with Turbo-C.
- Detecting and supporting features of a wider range of terminals, also for some legacy terminals.
- Runtime support library contains patterns for suitable X resource configuration.
- Runtime support library contains scripts for starting terminal window or mined in window with appropriate settings for Unicode support.
- Makefiles for various operating environments are included; makefiles also support legacy systems.

Mined homepage and download.
Thomas Wolff