Lua-mode代码的缩进问题

(custom-set-variables
 '(lua-indent-level 4))

我用customize-variable设置的,但是不管用。

我直接开启 lua-mode 后,运行 (setq lua-indent-level 2) 是可以成功修改缩进的。我使用的是 spacemacs, 直接放到 user-config 里面也是可以的。

这样的话,每次打开一个lua文件,开启lua-mode,再手动设置 lua-indent-level ,感觉好麻烦,有没有什么方法可以打开lua文件就是你想要的缩进方式,比如说4个空格。

把设置 lua-indent-level的语句放到 with-eval-after-load lua-mode 块里面就可以了

(with-eval-after-load 'lua-mode
  (setq lua-indent-level 2))

谢谢山人,用你这个方法已经解决了:grin:

(with-eval-after-load 'lua-mode
  (setq lua-indent-level 2))

这么做是对的,似乎更符合逻辑。但也可以不用 with-eval-after-load,因为 setq 并不需要变量已经定义,甚至在 setq 之后再定义这个变量,setq 赋的值还在。

(progn
  (setq bar 111)
  (defcustom bar 222 "")
  bar)
    ⇒ 111

我用的方法,比较繁琐。

建了一个lua-config 的layer

好处是,比较清晰吧,不会出现臃肿的user-config

https://github.com/young40/dot/blob/master/spacemacs-private/lua-config/packages.el

我也想自己配置一个layer,不想什么东西都挤在config里面,看到你们配置的layer不知道什么意思 ^…^

似乎问题的原因还没找出来,问题就被宣布解决了,这样的话,讨论对除了 OP 以外的人来说没什么意义。

custom-set-variablessetq 都是有效的(甚至前者更「正确」),用不用 eval-after-load 也都一样。

2 个赞

我也想用custom-set-variables设置,就是设置了不管用。

我其实只是简单的 setq 就解决了的,custom-set-variable 也是可以的。 但是不知道你为什么要用 with-eval-after-load 才可以。。。

建议你还是使用 custom-set-variable 然后打开一个 lua 文件,此时再用 c-h v 看看 lua-indent-level 这个变量的值是否是你修改过的值。

(setq lua-config-packages
      '(lua-mode))


(defun lua-config/post-init-lua-mode()
  (use-package lua-mode
    :defer t
    :config
    (progn
      (setq lua-indent-level 4))
    ))

精简一下,这样就能明白了吧?

按照山人的方式,解决了,果然有妙计