请教:如何去掉函数缩进

在emacs-lisp 当中,想要下面这种样子:

(my-func args
(if  t
     nil
   t)
)

如上面的例子,我只想把 my-func 这层的缩进去掉,内部其他表达式缩进都保持原来的姿势。 该怎么搞?

每种语言的 major mode 都有自己的缩进方式。你这个是什么语言?什么 major mode?

只要 emacs-lisp 就行。

可以用 agressive-indent。其实默认的缩进就是正确的,不知道为什么你这个不对。

不,我可能没讲清楚。我想让最外层函数的缩进没有。函数内部其他的子表达式保持原有正确的缩进。

这是什么奇葩想法。

你可以“重载” lisp-indent-function 函数来实现。

(defun your-func (&rest _)
  (declare (indent (lambda (&rest _) 0))))

(your-func

(if cond
    t
  nil)

(progn
  1
  2
  3))
1 个赞

达成。实在是看不懂官方的(declare (indent indent-spec))关于传函数的解释。不过总算达成想要的效果了。谢谢。

这个有点怪啊,为什么要这样

我的配置中,有个函数 宏,里面放了超过几千行的程序,这个时候,函数名不是太重要,而内部的内容才重要。缩进直接忽略母宏,方便阅读维护代码。

几千行的宏,不考虑将其split吗?

outline-mode查看,跟straight学的。 :sweat_smile:

straight 作者的配置 radian 单个文件 5000多行。