Emacs Lisp: why is the programming language Emacs Lisp so comfortable?
My thoughts about the programming language Emacs Lisp. Apparently and initially designed to extend the GNU Emacs Editor, Emacs Lisp has grown into fully fledged programming language. Things like CGI, database interfaces, contact management, customer relationship management, project management, and so many other features becomes possible within GNU Emacs. Here is the summary on what I think what makes GNU Emacs and Emacs Lisp so comfortable programming language.
I have tried to figure out what is making the GNU Emacs and Emacs Lisp so comfortable programming language. And then I was thinking of some other programming languages that I know.
Major qualities of Emacs Lisp
Programming language Emacs Lisp is well documented.
Documentation is integrated into programming environment.
Debugging is integrated within GNU Emacs.
GNU Emacs is GUI and UI for Emacs Lisp programming.
Suitable for beginners
GNU Emacs is integrated computing environment.
Community is maintaining large number of packages.
Programming language Emacs Lisp is well documented within the GNU
Emacs editor itself. Every function of the language may be described
with few keystrokes such as
C-h f or by
M-x describe-function. One
may access description of every programming function almost within a
second or two.
Other programming languages are also well documented, but documentation is too often not integrated into the programming environment.
What is real benefit of Emacs Lisp documentation is that such is integrated into the programming environment.
Help menu every GNU Emacs user may find various integrated documentation. There is no need to open up any browser or have Internet connection. This is huge benefit and advantage in comparison to many other programming languages which either requires from users to open up Internet pages or to download documentation. Browsing documentation is not as easy as within the GNU Emacs.
One other well documented language that I know is the implementation of Common Lisp as CLISP. Within the console REPL and by using TAB completion it offers direct access to its functions and also access to the Common Lisp Reference.
However, Common Lisp Reference is not a free documentation! Downloading and using it, distributing or modifying it is subject to proprietary conditions!
Within GNU Emacs itself and in connection with Emacs Lisp packages that allows referencing, also other programming languages become integrated and their documentation becomes easier accessible. One such example is SLIME: The Superior Lisp Interaction Mode for Emacs that allows programmer to quickly access the Common Lisp Reference.
Few other programming language documentation references can be also accessed when using GNU Emacs in easy manner.
But authors and designers or programming languages have not and maybe could not make the documentation well integrated.
One good example of integrated documentation for a programming language is Dr. Racket.
GNU Emacs has all of the documentation well integrated
GNU Emacs Tutorial is accessible from
The GNU Emacs tutorial is available in 20 international languages.
The GNU Emacs Frequently Asked Questions are directly accessible from
The Emacs News and Emacs Known Problems are also there.
Reporting a bug is easy from the
There is feature to search the documentation by various means.
The GNU Emacs Manual is directly accessible within the GNU Emacs editor.
The Introduction to Emacs Lisp is accessible within the
The Emacs Lisp Reference is accessible within the
Helpmenu within the GNU Emacs itself.
All other system Info pages are accessible within Emacs.
All other system manual pages are accessible within Emacs.
Browsing built-in packages and functions is extremely easy.
Additionally plethora of websites exist on Internet including books, videos and other media that are helpful to users and programmers of Emacs Lisp programming language.
Dr. Richard Stallman and hundreds of contributors have put a lot of attention and focus and efforts that the documentation for GNU Emacs Editor becomes available to everybody and free under the GNU Free Documentation License.
That the documentation for GNU Emacs editor and the Emacs Lisp programming language is so well integrated within the GNU Emacs editor itself is great advantage for beginners and Emacs Lisp programmers over many other programming languages.
When something is to break in your Emacs Lisp programming this is most probably not going to crash the GNU Emacs itself. And if does happen, you still have the option to
M-x report-emacs-bug to the community of developer who will genuinely look into it and correct whatever is necessary.
Debugging of Emacs Lisp functions is directly integrated into GNU Emacs editor. There is a built-in debugger, and options to debug functions as soon as it starts executing. You can watch step by step execution of a function. And there is edebug that is to display the source and help the programmer easily debug whatever is not working temporarily.
Debugging is interactive. Rarely some programming language but LISP families offer so much comfort while debugging.
And now we come to the fact that for Emacs Lisp programming a user does not need various third party User Interfaces or GUIs or Graphical User Interfaces and that is because the GNU Emacs editor itself is the user interface or graphical user interface, all in once!
Do you need a menu? You may install and configure your own menu for whatever function s you wish directly within the GNU Emacs. You may remove any menus or menu options from GNU Emacs. You could even use the GNU Emacs interface without any standard menus, all customized to your own needs.
GNU Emacs could easily be made the provide POS or Point of Sale software. It could be a catalog management interface. It could be a real estate or real property management or sales interface. The GNU Emacs editor acts and can act as your user interface for many life and business tasks.
Database entries may be conducted by using GNU Emacs editor. Now watch how I access database tables in my PostgreSQL database.
The GNU Emacs editor is the user interface itself. There is nothing to do on programmers behalf but to use the ready made options to interact with the user of software.
How cool is that?
Is it suitable for beginners?
I think it is. The GNU Emacs Editor with all the integrated documentation and Emacs Lisp Introduction is well suited for beginners in programming.
The LISP family of languages) by tradition and practicality practices short definitions of programming functions.
Often a function is to fit within one visible screen within the editor. One function makes one thing. One function is usually short and easily understandable provided that a programmer does know how to read them. Example is here below.
(defun read-from-buffer (value &optional buffer-name)
"Edits string and returns it"
(let ((this-buffer (buffer-name))
(buffy (if buffer-name buffer-name "*edit-string*")))
(setq header-line-format "➜ Finish editing with C-c C-c or C-M-c")
(local-set-key (kbd "C-c C-c") 'exit-recursive-edit)
(if (stringp value) (insert value))
;; (speak "You may quit the buffer with Control C Control C")
(message "When you're done editing press C-c C-c or C-M-c to continue.")
(if (get-buffer-window buffy)
(setq new-value (buffer-substring (point-min) (point-max)))
The concept of keeping functions simple is not a requirement as with any LISP programming language one can make it complex and not readable. Yet the convention and tradition is such that LISP and Scheme programmers keep their functions and procedures as short as possible doing one thing well.
This concept is important, as it is to help beginners to understand what is going on.
GNU Emacs editor itself is not just an editor. It is integrated computing environment. Integrated means formed into a whole. It allows any kind of computing work to be done within. The author of the Introduction to Emacs Lisp calls it extensible computing environment. It allows the user to manage files, databases, calendars, tasks, projects, companies, issue invoices, write books, typeset the text, debug the code, program in any programming language, evaluate from almost any programming languages within the GNU Emacs itself, it allows to publish files online, read letters, send emails, access news servers, send SMS or faxes, and so much more.
There is large number of communities all about and around the GNU Emacs and Emacs Lisp programming language. The users list for the GNU Emacs text editor is live group accessible by email for everybody. There exist number of websites all related to GNU Emacs, and various groups on social networks including the XMPP conference rooms about the GNU Emacs, including the Internet Relay Chat.
The large system and availability of various communities and groups and fans of GNU Emacs editor and Emacs Lisp programmers are big help that makes the Emacs Lisp most comfortable programming language that I know.
Contact GNU.Support now. There is a simple rule at GNU.Support: if we can help you, we do, whenever and wherever necessary, and it's the way we've been doing business since 2002, and the only way we know