Emacs Lisp is a dialect of the Lisp programming language used by GNU Emacs. Most of the editing functionality built into Emacs is written in Emacs Lisp, with the remainder being written in C (as is the Lisp interpreter itself). Users of Emacs commonly write Emacs Lisp code to customize and extend Emacs.
Emacs Lisp is also commonly referred to as "elisp" or "Elisp". Files containing Emacs Lisp code use the .el filename suffix; when byte-compiled, the same filename prefix is used but with the .elc filename suffix.
Emacs Lisp is a Lisp-2, which means that a single identifier (in Lisp terminology, "symbol") can simultaneously exist as ("be bound to") both a function and a variable.
You can customize the way Emacs edits and displays this and all other lisp languages with M-x customize-group RET lisp RET.
- <span title="Try `C-h k M-<tab>' for more information." style="border-bottom
- 1px dotted">[M-<tab>]
- Complete at point
- Evaluate the
;; Turn on outline minor mode (add-hook 'emacs-lisp-mode-hook 'outline-minor-mode) ;; Add key bindings for Org-style outline cycling (add-hook 'outline-minor-mode-hook (lambda () (define-key outline-minor-mode-map [(control tab)] 'org-cycle) (define-key outline-minor-mode-map [(shift tab)] 'org-global-cycle)))
Now visit any elisp file (say M-x find-library RET outline) and keep pressingand see what happens. Experiment similarly with .
Add the following snippet to your Emacs configuration file, so that you don't have to indent deliberately. See M-x reindent-then-newline-and-indent.
(add-hook 'emacs-lisp-mode-hook (lambda nil (local-set-key [(return)] 'reindent-then-newline-and-indent)))
Always keep parentheses balanced
By default elisp uses dynamic scope. Since Emacs 24 lexical scope has been added.
To use lexical binding, an Emacs-lisp source file must set a file-variable to t in the file header, e.g., by using a first line like:
;;; -*- lexical-binding: t -*-