2014-09-19 113 views
0

通常情况下,我需要启用自动填充模式,所以我打开它在.emacs中。但是,在PHP模式下编辑PHP时,我不想使用自动填充模式。有没有办法将它设置为.emacs,这样当我处于PHP模式时,自动填充段落模式会自动关闭,当我离开php模式时,它会自动打开,禁止其他覆盖?在Emacs中,如何在php模式下禁用自动填充段落模式?

更新说明:.emacs的仔细检查发现,自动填充设置了由

(custom-set-variables 
;; custom-set-variables was added by Custom. 
;; If you edit it by hand, you could mess it up, so be careful. 
;; Your init file should contain only one such instance. 
;; If there is more than one, they won't work right. 
'(column-number-mode t) 
    ... 
    '(text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify))) 
    ...) 
+0

'自动填充模式'看起来不像是全局的,所以你可能已经把它设置在你的用户定制文件的某个地方。我能想到的控制其行为的最简单方法是对打开“自动填充模式”(即,不包括“php-mode”)(或创建此类函数)的函数进行例外处理,或者干脆将其用作通常使用的主模式挂钩启用的缓冲区本地次要模式。该文档声明它是一个缓冲区本地次要模式:https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Fill.html – lawlist 2014-09-19 06:42:04

+0

如果它是一个继承问题(例如'php -mode'是借用另一个主要模式)而不是全局设置问题,那么也许你可以尝试像这样:'(add-hook'php-mode-hook(lambda()(auto-fill-mode-1)) )“继承问题是我建立自己的文本模式与股票版本不同的原因之一 - 也就是说,其他主要模式不会继承某些文本模式设置。 '-1'(负整数)关闭次模式。 – lawlist 2014-09-19 07:05:56

+0

@lawlist你可以给你的评论作为正确的答案吗? – Thomas 2014-09-19 13:51:20

回答

1

一些主要-模式继承其他模式(例如,text-mode被许多流行的主要模式)的某些设置。下面的代码片段可以用于使用其模式钩以禁用功能用于某个特定的主模式:

(add-hook 'php-mode-hook (lambda() 
    (auto-fill-mode -1))) 

它有时是有益的检查,看看是否特定的功能已被整体或局部启用,这在转向可以提供关于该功能是否已被主要模式继承的线索。在这种情况下,auto-fill-mode状态的文件如下 - https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Fill.html

自动填充模式是一个缓冲,局部轻微模式(见次要模式),其中,当他们变得太宽线自动断断裂发生。只有当你输入一个<SPC><RET>

相关问题