我工作的源代码树的文件缩进了不同的选项卡值(更不用说空格)了,我能做的最好的事情就是设置emacs来使用在我修改的代码区域中找到的样式。而不是将M-x set-variable tab-width设置为4或8,用于在这两个值之间切换tab-width的键绑定将有很大帮助。
感谢。
答案 0 :(得分:12)
;; Obviously substitute your preferred key for <f8>
(global-set-key (kbd "<f8>") 'tf-toggle-tab-width-setting) ; ' "fix" highlighting
(defun tf-toggle-tab-width-setting ()
"Toggle setting tab widths between 4 and 8"
(interactive)
(setq tab-width (if (= tab-width 8) 4 8))
(redraw-display))
根据建议的评论
编辑添加重绘显示答案 1 :(得分:5)
没有完全回答这个问题(给出的答案已经足够好了),但您可能需要考虑设置每个文件的本地变量。例如,假设“//”表示使用您的语言发表评论,您可以将以下内容放在文件的第一行行中:
// -*- tab-width: 4 -*-
每当您访问该文件时,emacs都会为您设置变量。有关基于文件的变量的详细信息,请参阅http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html。
当然,如果文件是在一个小组之间共享的话,这可能不是一个选择 - 除非你能说服你的大学这个第一行评论完全无害且非常有用!
答案 2 :(得分:1)
感谢所有答案。我添加了一个重绘显示调用,以便立即反映更改。 (尝试将此作为评论发布,但不能。)
(global-set-key (kbd "<f8>") 'tf-toggle-tab-width-setting)
(defun tf-toggle-tab-width-setting () "toggle setting tab widths between 4 and 8"
(interactive)
(setq tab-width (if (= tab-width 8) 4 8))
(message "set tab-width to %d." tab-width)
(redraw-display)
)
沿着同样的路线。 :(
(global-set-key (kbd "<f7>") 'tf-toggle-indent-mode-setting)
(defun tf-toggle-indent-mode-setting ()
"toggle indenting modes"
(interactive)
(setq indent-tabs-mode (if (eq indent-tabs-mode t) nil t))
(message "Indenting using %s." (if (eq indent-tabs-mode t) "tabs" "spaces"))
)
答案 3 :(得分:0)
将此内容放入.emacs
或.emacs.d/init.el
文件中:
(defun toggle-spaces ()
"Toggle tab-width between 4 and 8"
(interactive)
(if (eq tab-width 4)
(setq tab-width 8)
(setq tab-width 4)))
;; This will set Ctrl-g to toggle but you can set it to anything
;; you want.
(global-set-key "\C-g" 'toggle-spaces)