Developers Club geek daily blog

2 years, 10 months ago
Everything that needs to be known in order that quickly and competently to configure Emacs.

Emacs ["Editor MACroS", ​ / ˈeditər makrus/​ / ˈemaks / ​, further &x2014; "эмакс"] it was created very long time ago in Laboratory of artificial intelligence of Massachusetts Institute of Technology MIT AI Lab. Emaks it is a text editor behavior and which opportunities change directly to a time of writing of the text in it in a programming language on which it is written itself emaks. Moreover, directly to a time of writing in a text emaksa in a programming language on which it is written itself emaks the behavior and possibilities of the programming language in which it is written emaks changes. All this does emaks by the most flexible and universal text editor in comparison with any other.

Emaks several decades develop. Every year hundreds of people add in it all new and new features. Normally it is small fragments of the isolated functionality under needs of the specific user. However, the total amount and width of a scope of these improvements turned a powerful text editor into comprehensive cross-platform software environment in which over time it is possible to do all anything if it at least belongs to work with the text a little.

Universality of an emaks plays into the hands of you if you understand as it is arranged: you can do one thousand different things via the common interface in which everything consists of the text in all its manifestations. Perhaps, it looks archaically from the point of view of ideas of the modern user interface, but it not so; at least because modern interfaces do not disclose force of a plain text fully. To become the competent user of an emaks, you should understand its concept and the internal device, and it means &x2014; to be acquainted with culture of hackers of the 70th years of the last century. Such situation frightens beginners, but everything is not so bad: emaks it is difficult only for complex challenges, and for simple tasks it is simple, everything depends on your requirements. It is better to begin acquaintance to it with the high-level overview "A Guided Tour of Emacs" on freeGNU operating systemthe website .

Richard Stallman describes history of emergence of an emaks in the article "My Experience with Lispy and Development of GNU Emacs"; this history is closely connected with not less interesting story of the GNU project from which it is possible to learn that GNU Emacs was the first project in the GNU project. The essence of what is emaks is in detail stated in the document "to EMACS: The Extensible, Customizable Display Editor" written in 1981 &x2014; and for last years this essence did not change at all.

Expansibility of an emaks this his blessing and damnation. Of course, in standard delivery emaks it is good, but is not so good as could be. You are not limited to solutions of developers and if you need functionality of which in an emaksa is not present, you can add it: it is rather simple to open emaks and in detail to describe it. Eventually all opportunities of an emaks for text editing it is only the text describing what to do with the text, and you can change this text at any time in the same way as well as any other, having changed that possibilities of an emaks. Potentially its opportunities are boundless, but that to use them it is necessary to undertake setup, and it means ability to program and dense communication with community.

Setup of an emaks these some kind of arts and crafts; for each specific user it consists in drawing up the lisp-program of fragments of a lisp-code of the separate sources taken from a set. There is no other method in principle therefore before immersion in this subject it is necessary to accustom with programming in general and programming on a lispa in particular. Lisp is the most ancient of the used programming languages of very high level, and also the simplest of methods of the organization of calculations known to mankind of the characters, data structures and functions (opened by mathematics in 1936).

The book "Structure and Interpretation of Computer Programs" &x2014; will help with studying of programming; it is an introduction course on information science in MIT. In writing of programs for an emaks the textbook "Introduction to Programming on Emacs Lisp", the reference book "GNU Emacs Lisp Reference Manual", and the brochure of "Common Lisp Quick Reference" is useful.

Emaks absolutely definitely not that program studying of which it is worth undertaking only to edit in it the text. It should be perceived rather as a live artifact and a cultural monument of more civilized era. Studying of an emaks will be waste of time if you do not program and do not want to have nothing in common with this activity, but if it not so, nothing is better than an emaks you will not find.

Creation of a configuration, convenient for itself and its subsequent operational development is normal drags on for long time. Itself can facilitate life and to set a framework in which all main settings are executed according to vision of the author of a framework and to you it is not even necessary to edit the source code just to use emaksy in the pleasure. The most popular frameworks for today: Spacemacs, Emacs Prelude, Eschulte Literate Emacs Starter Kit, Overtone Emacs Live, Purcell emacs.d, Oh My Emacs.

Everything will be good until you do not want to build in in emaks a certain improbable functionality of which in the selected framework is not present, and then you should integrate manually a certain code not only in emaks, but also into a framework, and it will be for this purpose necessary to deal with its internal device that nullifies all its advantages. The author of Emacs Starter Kit (see Meet Emacs) came when he closed the project after six years of development to such conclusion:
Old Emacs Starter Kit versions were uniform - for - all code base of the directory replacing contents ~ / .emacs.d. It was very popular solution, but the big linking of incoherent functionality conducted to the fact that the user just got used to it nothing without understanding. When some things broke or behaved not as you wanted, you also did not know where to correct them.

I understood that users suit the small packets giving desirable functionality better. Instead of a dump of a code, Emacs Starter Kit became the small manual. As to the user of Emacs, you it is necessary to look for new fragments of an emaks-lisp-code, to integrate them, to configure, and even to write own. Emacs Starter Kit will help you councils where to begin and what exactly to look for, but assembly of a suitable configuration this personal record of everyone.

The system of packets of an emaks is the lisp-program which is built in it [see the source code on github; to open the graphic interface of system of packets in an emaksa &x2014; M-x list-packages] which automatically integrates in emaks other lisp-programs from the Internet. The system of packets works irrespective of an operating system under which the editor is started, she traces dependences between lisp-programs and cares for their updating. Development of this sitema beganTom Tromeyof in 2007, in 2012 it was included in structure of Emacs 24.1; the peak of popularity of Emacs Starter Kit fell on these years, that is by and large the community used it for development of the system of packets.

Anyway, the personal configuration of an emaks inherently was eat and will be just big heap of a bessvyazany code, and the best method to cope with it &x2014; to leave everything as it is; or to turn this heap into the manual which will explain the reasons (first of all not to forget most) on which this or that fragment is in this heap, and then to make so that this manual itself turned itself into the lisp-program and executed a configuration of an emaks at start. And also rebuilt itself at change and downloaded new versions from remote sources. Why is also not present. The same manual for setup of an emaks a mouse in the best traditions of Stanford and MIT.


The complete version of article cannot be published here because of the fact that in it internal references in a format which is not supported habrakhabry are used.

Source code of article: Gitlab, Github.

This article is a translation of the original post at
If you have any questions regarding the material covered in the article above, please, contact the original author of the post.
If you have any complaints about this article or you want this article to be deleted, please, drop an email here:

We believe that the knowledge, which is available at the most popular Russian IT blog, should be accessed by everyone, even though it is poorly translated.
Shared knowledge makes the world better.
Best wishes.

comments powered by Disqus