Difference between revisions of "Emacs Lisp"

From WikEmacs
Jump to navigation Jump to search
Line 41: Line 41:
 
== Indentation ==
 
== Indentation ==
  
Add the following snippet to your <tt>init.el</tt> or <tt>.emacs</tt> file, so that you don't have to indent deliberately. See {{Command|reindent-then-newline-and-indent}}.
+
Add the following snippet to your <tt>[[init.el]]</tt> or <tt>[[.emacs]]</tt> file, so that you don't have to indent deliberately. See {{Command|reindent-then-newline-and-indent}}.
  
 
<source lang="lisp">
 
<source lang="lisp">

Revision as of 12:16, 28 March 2012


(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-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 the following snippet to your init.el or .emacs 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)))

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 -*-

External links