Emacs Lisp
Revision as of 12:14, 28 March 2012 by PhilHudson (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
(a short overview should go here)
Also known as "elisp" or "Elisp".
Basic setup
You can customize this and all other lisp languages with M-x customize-group RET lisp RET.
Helpful keybindings
- <span title="Try `C-h k M-<tab>' for more information." style="border-bottom
- 1px dotted">[M-<tab>]
- Complete at point
- [C-M-x]
- Evaluate the
defun
at point
Common customizations
Outlining
For Org-style outlining, add the following customizations.
;; 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 pressing [S-TAB] and see what happens. Experiment similarly with [C-TAB].
Indentation
Add following customization, 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)))
Scope
By default elisp using dynamic scope. Since Emacs 24 lexical scope has been added.
To use lexical binding, an Emacs-lisp source file must set a file-variable `lexical-binding’ to t in the file header, e.g., by using a first line like:
;;; -*- lexical-binding: t -*-