我参与了使用选项卡的 python 项目,但是我没有在我编写的所有其他代码中使用它们,在该特定项目中使用它们至关重要。项目位于特定目录下的一个目录中。 IE:
\main_folder
\project1
\project2
\project3
...etc
我在打开文件时有几个函数/挂钩,并保存取消制表和制表我工作的整个缓冲区。
;; My Functions
(defun untabify-buffer ()
"Untabify current buffer"
(interactive)
(untabify (point-min) (point-max)))
(defun tabify-buffer ()
"Tabify current buffer"
(interactive)
(tabify (point-min) (point-max)))
;; HOOKS
; untabify buffer on open
(add-hook 'find-file-hook 'untabify-buffer)
; tabify on save
(add-hook 'before-save-hook 'tabify-buffer)
如果我将其放入 .emacs 文件中,它将在我打开的每个 .py 文件上运行,这不是我想要的。我想要的是让这些钩子仅在一个特定文件夹及其各自的子文件夹中使用。尝试过 .dir_locals 但它仅适用于属性而不是挂钩。我无法在特定模式(即 python 模式)下使用钩子,因为几乎所有项目都是用 python 编写的。老实说,我尝试编写 elisp 条件保存但失败了。
一个非常简单的解决方案是仅添加一个可用于禁用挂钩的配置变量。例如:
(defvar tweak-tabs t)
(add-hook 'find-file-hook
(lambda () (when tweak-tabs (untabify (point-min) (point-max)))))
(add-hook 'before-save-hook
(lambda () (when tweak-tabs (tabify (point-min) (point-max)))))
现在您可以添加一个.dir-locals.el
相关目录下的文件,设置tweak-tabs
to nil
,在那里禁用此功能。
(但另一个问题是,这是处理选项卡的一种非常糟糕的方式。例如,保存文件后do请参阅其中的选项卡。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)