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. This provides the capability to read mail, news, browse pictures, read man and info pages, browse the web, execute arbitrary programs, and more, without leaving the editor.