如何在plist中对齐符号?请使用以下默认'emacs-lisp-mode
缩进
'(:a 1
:b 2
:c 3)
(defhydra h (:color amaranth
:pre some-pre
:post some-post)
nil)
如何实现以下缩进?
(defhydra h (:color amaranth
:pre some-pre
:post some-post)
nil)
另一方面,像c-show-syntactic-information
这样的lisp有类似的功能,这对这类事物非常有用。 apropos
找不到任何内容。
答案 0 :(得分:2)
您希望Emacs缩进defhydra
的方式与缩进Common的方式相同
Lisp defun
,所以你把
(autoload 'common-lisp-indent-function "cl-indent" "Common Lisp indent.")
(custom-set-variables
'(lisp-indent-function 'common-lisp-indent-function))
(put 'defhydra 'common-lisp-indent-function 'defun)
进入.emacs
并在lisp-mode
中编辑您的九头蛇文件。
答案 1 :(得分:0)
在前一个答案的基础上,common-lisp-indent-function
将根据需要缩进plist。但是,我不想全局更改缩进函数,所以这只是用common-lisp-indent-function
缩进区域并使用前缀打开/关闭它的包装器。
(defun my-cl-indent (&optional start end switch)
"Indent region with `common-lisp-indent-function'. With prefix
toggle buffer-local value to be `common-lisp-indent-function'."
(interactive "r\nP")
(when switch
(setq-local lisp-indent-function
(if (eq lisp-indent-function 'lisp-indent-function)
'common-lisp-indent-function
'lisp-indent-function)))
(let ((lisp-indent-function 'common-lisp-indent-function))
(put 'cl-flet 'common-lisp-indent-function
(get 'flet 'common-lisp-indent-function))
(indent-region start end)))