Emacs Lisp 简明教程github
进入scratch
缓存区,segmentfault
模式选择 lisp-interaction-mode
缓存
(注: 能够经过 m-x lisp-interaction-mode ret
切换模式)函数
(message "hello world")
(1) c-x c-e
spa
执行lisp代码的命令为 c-x c-e
, 即函数 eval-last-sexp
code
函数解释以下:教程
执行光标以前的表达式ci
(2) c-j
,即函数 val-print-last-sexp
作用域
函数解释以下:
执行光标以前的表达式,和c-x c-e
的不一样之处是,执行结果不只在底部的mini buffer
中输出,并且在 current buffer
中也会显示
注意: 一次只会解释执行一个表达式
函数由3个部分组成,
(1)函数名称
(2)函数参数列表
(3)函数体
函数体和函数定义之间,能够经过"doc string"
添加函数文档
注意,
(1) 若是须要执行新定义的函数 hello-world
,须要先在函数定义结尾,执行c-x c-e
解析执行该新函数,不然会报错
Debugger entered--Lisp error: (void-function hello-world)
(2) 当执行过函数定义后,光标在函数名时候,经过命令 c-h f
能够查看该函数的文档
setq
能够经过 c-h v
查看变量的文档
defvar
defvar
声明变量,若是声明的变量已经存在,则不会改变原值
因为lisp
中的函数都是全局的,致使setq
定义的变量也容易变为全局变量,
若是想要查看变量是否已经存在,能够经过c-h v
查看是否已经定义
lisp
中可使用 let
指定局部做用域的变量
这时候,局部变量 pi
, area
定义在函数 circle-area
中,经过c-h v
没法查看变量
let*
和 let
的使用方式相同,惟一区别是:
let*
中可使用以前定义的局部变量
lambda
表达式lambda
表达式赋值为变量