Annotated edit history of
Elisp version 9, including all changes.
View license author blame.
| Rev |
Author |
# |
Line |
| 8 |
AristotlePagaltzis |
1 |
The [LISP]-based scripting language used to customise the [Emacs] programmers' editor. |
| 6 |
GlynWebster |
2 |
|
| |
|
3 |
Emacs is completely scriptable in Elisp - look in /usr/share/emacs/site-lisp/*.el for the start-up and config files. |
| |
|
4 |
|
| |
|
5 |
''[Programming in Emacs Lisp | http://www.delorie.com/gnu/docs/emacs-lisp-intro/emacs-lisp-intro.html]'' is an online book about Emacs scripting by Robert J. Chassell. It does not assume you already know Lisp. |
| |
|
6 |
|
| |
|
7 |
!!! Note for Lisp programmers |
| |
|
8 |
ELisp is __dynamically scoped__. This affects how global variables in function definitions are looked up. With dynamic scoping the interpreter looks up these variables in the environment where the function is ''called''. What other [LISP] do is to use the variable definitions that were present when the function was ''defined'' (i.e. ''lexical scoping''). This difference will only effect you if you are trying to do lots of [higher-order functional programming | HigherOrderFunctions] in ELisp, but if you do, it will trip you up. |
| |
|
9 |
|
| |
|
10 |
!!!Example |
| |
|
11 |
|
| |
|
12 |
This sets up the F12 key to instantly save and close a file that Emacs is editing: |
| |
|
13 |
|
| |
|
14 |
(defun begins-with-p (str sub) |
| |
|
15 |
"True if string `str' begins with substring `sub'." |
| |
|
16 |
(and (>= (length str) (length sub)) |
| |
|
17 |
(string= (substring str 0 (length sub)) sub))) |
| |
|
18 |
|
| |
|
19 |
(defun put-away-buffer (&optional buffer) |
| |
|
20 |
"This kills a buffer, saving its contents first, if necessary. |
| |
|
21 |
Internal and *scratch* buffers are ignored." |
| |
|
22 |
(interactive) |
| |
|
23 |
(unless buffer |
| |
|
24 |
(setq buffer (current-buffer))) |
| |
|
25 |
(unless (or (begins-with-p (buffer-name buffer) " ") ;ignore internal buffers |
| |
|
26 |
(string= "*scratch*" (buffer-name buffer))) ;ignore scratch buffer |
| |
|
27 |
(when (and (buffer-file-name buffer) ;is visiting a file |
| |
|
28 |
(buffer-modified-p buffer)) |
| |
|
29 |
(save-buffer)) |
| |
|
30 |
(kill-this-buffer))) |
| |
|
31 |
|
| 7 |
GlynWebster |
32 |
(global-set-key [[f12] #'put-away-buffer) |
| 6 |
GlynWebster |
33 |
|
| |
|
34 |
---- |
| 9 |
AristotlePagaltzis |
35 |
CategoryProgrammingLanguages, CategoryFunctionalProgrammingLanguages |