Emacs中编辑保存makefile文件时会错误地将TAB转成空格的解决方法
2014-03-05 15:48
399 查看
问题描述
我的Emacs使用了Purcell的配置,在其配置中使用了whitespace-cleanup,且通过在.emacs.d/lisp/init-edit-utils.el中设定:
(require 'whitespace-cleanup-mode) (global-whitespace-cleanup-mode t)
这样设定后,默认会全局使用whitespace-cleanup-mode,导致的结果是在保存文件前将TAB转换成对应的空格。这样的结果在多数情况下是我们想要的,但是对于有些类型的文件(比如makefile)而言便是灾难了。通过实测发现,只有当新建maekfile文件保存时,才会将TAB符替换成空格,导致makefile格式错误,而打开编辑一个已存在的makefile后保存则不存在这个问题。
解决方法
网上的方案
网上查了很多资料,基本都是以下解决方案:
;; 默认不加载indent-tabs-mode (setq-default indent-tabs-mode nil) ;; 保存文件前执行一次whitespace-cleanup (add-hook 'before-save-hook 'whitespace-cleanup) ;; 如果是打开makefile文件,则开启indent-tabs-mode,因为whitespace-cleanup中会用到这个 (add-hook 'makefile-mode-hook 'indent-tabs-mode)
但是我看了Purcell配置,发现两点跟以上解决方案不符:
- Purcell的配置并不是使用after-save-hook的,而是启用global-whitespace-cleanup-mode来实现空格处理的功能
- 当前版本的whitespace-cleanup-mode的实现代码中,并没用使用indent-tabs-mode,因此修改这个没用
我的解决方案
经过一系列的失败尝试后,我总算找到一种解决方案:
;; 后面设置tab-width部分只是个人喜好,与本问题无关 ;; 当打开makefile文件时,禁用whitespace-cleanup-mode。其他类似需要保留TAB的文件类型也可以采用这种方法 (add-hook 'makefile-mode-hook (lambda () (whitespace-cleanup-mode 0) (setq tab-width 8)))
现在,我们在Emacs中新建makefile文件并保存后,再也不会出现问题了!^_^
Author: Rex Shen
Created: 2014-03-05 Wed 15:41
相关文章推荐
- tomcat下载文件时,URL含有文字参数与空格参数出错(java.io.FileNotFoundException错误) 解决方法(转)
- 关于PhotoShop中保存CMYK格式TIFF文件在GDI+错误地显示颜色的问题解决方法
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- 在 Visual Studio 中打开编辑 cshtml 文件时出现错误:未能完成该操作 无效指针 的解决方法
- utf8 文件 错误保存为gbk 中文乱码 解决方法
- Atom编辑Markdown文件保存后行尾的空格自动消失的问题解决
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- Word2007“由于文件许可权错误,Word无法完成保存操作”问题的解决方法
- 编辑 XSD 文件时错误提示 components from this namespace are not referenceable from schema document 解决方法
- 用vim编辑文件时出现E325: ATTENTION错误的解决方法
- 解决IDEA XML文件编辑后保存格式错误导致MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3无效
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- vim使用autocomplpop插件编辑html文件错误的解决方法
- Eclipse/MyEclipse中资源文件(*.properties)中输入中文保存错误解决方法
- Win10修改编辑hosts文件后无法保存的解决方法
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- Windows10修改编辑hosts文件后无法保存的解决方法【图文教程】
- Eclipse/MyEclipse中资源文件(*.properties)中输入中文保存错误解决方法