Difference between revisions of "Emacs Lisp"
Jump to navigation
Jump to search
Line 46: | Line 46: | ||
(local-set-key [(return)] 'reindent-then-newline-and-indent))) | (local-set-key [(return)] 'reindent-then-newline-and-indent))) | ||
</source> | </source> | ||
+ | |||
+ | == Scope == | ||
+ | By default elisp using dynamic scope. Since Emacs 24 lexical scope has been added. <br/> | ||
+ | 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: </br> | ||
+ | |||
+ | ;;; -*- lexical-binding: t -*- | ||
= External links = | = External links = |
Revision as of 05:43, 28 March 2012
(a short overview should go here)
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-q]
- Indent the sexp following 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 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 -*-