用了@子龙山人的配置,用spacemacs 保存退出的时候,默认会把整个代码tab转成空格,这样直接git add和git commit后,会有大量的修改,并且改变了原有的代码格式,请问下有什么方法解决吗?
(setq-default indent-tabs-mode t)
另外可以用 tabify 和 untabify 转换当前文件的空格和制表符。
我的电脑环境是ubuntu 14.04,然后emacs是25.2.1
第一次变成空格了,以后不就是一直是空格了? 用空格挺好的
你看看文件保存时的hook吧。
我也喜欢用空格,但是公司项目linux 内核代码 用的tab,我每次提交代码,改了一两行,git diff 有大片代码,已经被吐槽了,不利于同事定位问题。
可以了解下 ethan-wspace 附上我的配置作参考 vmacs/conf-space-tab.el at master · jixiuf/vmacs · GitHub
ethan-wspace是用来处理 空格及TAB 相应的问题的 它的 特点是 “无害” “do not harm” 有些脚本 提供了自动trim 掉行尾的空格有功能 ,但是在进行diff操作时,会多出不必要的diff ethan-wspace 当你打开一个已存在的文件时
- 如果文件中的whitespace 已经都clean 掉了,则它会 在每次保存前进行一个clean ,确保无whitespace
- 如果没有,ethan-wspace 高度显示 errors,它不会自动改动这些errors ,但是它会阻止添加新的errors
ethan-wspace 把以下几种情况定义为errors:
- 行尾空格, trailing whitespace at end of line (eol).
- 文末没有一个空行 no trailing newline (no-nl-eof).
- 文末有多个空行 more than one trailing newline (many-nls-eof).
- TAB
如果你不想让TAB成为一种error 可以 (set-default 'ethan-wspace-errors (remove 'tabs ethan-wspace-errors))
去掉 Ws-Butler package,同时修改 .spacemacs,把
;; Delete whitespace while saving buffer. Possible values are `all'
;; to aggressively delete empty line and long sequences of whitespace,
;; `trailing' to delete only the whitespace at end of lines, `changed'to
;; delete only whitespace for changed lines or `nil' to disable cleanup.
;; (default nil)
dotspacemacs-whitespace-cleanup 'changed
修改成 nil
只是吐槽而已,多么温和的同事啊。
子龙的配置可以说是比较精简了,其实你搜一下 whitespace 也能发现问题:spacemacs-private/init.el at 08f928f29ac80e2fb58146c627b03266cdea6e06 · zilongshanren/spacemacs-private · GitHub
如果你觉得这个设置比较习惯/合理,但是某个项目情况比较特殊,可以不用修改 emacs 配置,而是通过 .dir-locals.el 或 EditorConfig 来切换。
请问这个问题怎么解决的。我是ubuntu 20.04 + eamcs26.03,用的 子龙山人的配置。如果有知道的,还请告知。谢谢
如果不想要这个行为,可以去掉 Ws-Butler package, 并且把 dotspacemacs-whitespace-cleanup
改成 nil
你好. 我去掉了ws-butler 同时也设置了dotspacemacs-whitespace-cleanup nil 还是会将tab转换成space
如果我注释掉这个配置,就能正常保存,但是无法自动补全,是yasnippet这个引起的吗?感觉跟这个snippet 应该无关,不知道是不是引发了别的hook
现在只能先牺牲自动补全