Difference between revisions of "Emacs Lisp"

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

External links