Emacs is a powerful, customizable, self-documenting, modeless editor. It is used primarely to edit text, including text documents, source code of programs, web pages and XML documents, but can also be used to display and edit binary files.
Emacs allows efficient editing of text with shortcuts which allow operating on letters, words, sentences, and paragraphs as single units. This includes both moving around and operations like copying, deleting, transposing, and pasting. Macros can be conveniently defined to repeat sequences of commands. In addition, Emacs is (partially) built in a scripting language (elisp) which can also be used to define further functions extending existing capabilities.
Emacs has extensive support for editing source code, including programmable syntax highlighting, automatic indentation, source code indexing, overview modes, and navigation based on language specific units like functions and blocks. It is also possible to invoke the compiler from within Emacs and easily move between compiler output and corresponding positions in the source.
Emacs has multiple modules which provide further functionality: read mail and news, browse pictures, view man and info pages, browse the web, use a calendar and project planner, invoke the debugger, execute arbitrary programs, and more, without leaving the editor. Complete built-in documentation is included, including a tutorial for new users. Unicode and nearly all human languages and their scripts are supported.