elisp
2016年05月24日

必须在lisp-interaction-mode
c-x c-e执行当前行的elisp,输出在 message buffer
c-j输出在当前 buffer
选中要执行的代码 M-x eval-region

c-x f 查看函数信息 必须在函数上
c-x v 查看变量信息 必须在变量上

*有必要强调以下,文件中前面定义的函数或者变量等元子必须c-x c-e/c-j执行一遍,
*否则直接执行后边的信息输出emacs无法找到定义

例如
(setq myvar “var1”) c-x c-e / c-j
(message myvar)

*message string 参数必须是字符串
*如果需要输出数字 需要(message “%s” 5)

调用函数
(function-name)
定义函数
(defun function-name (parameter)
“description”
command)

定义变量 如果变量已存在则覆盖它的值
(setq var-name “var-value”)

定义变量 如果变量已存在,则不进行赋值,只添加备注
(defvar var-name “var-value” “var-description”)

定义局部变量 作用域就是let括号内
(let (var1 var2 …))
(let ((var1 “var1_value”) (var2 var2_value)))

(let ((name “zn”))
(message name)
)

let* 与 let 语法一样,但是let*的变量定义序列中,后边的变量可以使用前边变量的值
(let ((a 5) (b (+ a 3)))
(message “%d” b)
)

lambda 定义方式同defun
调用
(funcall (lambda ()(message “hello”)))
可以用setq赋值
(setq myfun (lambda ()(message “hello”)))
调用
(funcall myfun)