.emacs .txt 文件视觉线模式与缪斯模式同时
Posted
技术标签:
【中文标题】.emacs .txt 文件视觉线模式与缪斯模式同时【英文标题】:.emacs .txt file visual-line-mode simultaneously with muse-mode 【发布时间】:2013-01-28 15:05:05 【问题描述】:我通过以“#title”开头将我的缪斯模式文件(通常以 .txt 后缀命名)表示为缪斯模式。为此,我有
;; *.txt 文件上的缪斯模式,如果是#title 或 sect。标题在前 4 行 (add-hook '文本模式挂钩 (拉姆达() (除非 (或 (eq major-mode 'muse-mode) (不是 (stringp buffer-file-truename))) (当(等于(文件名扩展缓冲区-文件-真名)“txt”) (保存游览 (转到第 5 行) (if (re-search-backward "\* [A-Z][a-z]+.*\\|#title " 1 t) (缪斯模式)))))))如果我也有
(添加到列表 'auto-mode-alist '("\\.txt$" . visual-line-mode))在 .emacs 中(按照上面的代码),然后 muse-mode 不再起作用。虽然如果我在 muse 文件上的 emacs 中使用 Meta-x 调用视觉线模式,它不会搞砸。
理想情况下,我希望在所有 .txt 文件上都使用视觉线模式,但又不会弄乱缪斯。否则,我想以可视行模式启动所有 .txt 文件,除非它们是 muse 文件。
【问题讨论】:
【参考方案1】:变量'auto-mode-alist
选择主要模式。
visual-line-mode
是一个 minor 模式,通过将其添加到 'auto-mode-alist
您可以让它像 major 模式一样,它取代了 @987654327 @你开始了。
改为将turn-on-visual-line-mode-in-txt
添加到text-mode-hook
,如下所示:
(add-hook `text-mode-hook 'turn-on-visual-line-mode)
(defun turn-on-visual-line-mode-in-txt ()
(when (and (buffer-file-name)
(string-match ".txt$" (buffer-file-name)))
(turn-on-visual-line-mode)))
有关差异的更多信息,请阅读major 和minor 模式的手册。
【讨论】:
可爱。但是,我的要求是为所有 .txt 文件激活可视行模式,而不是所有文本模式文件。也就是说,我认为我不希望它用于 .tex 文件,例如,尽管根据您的建议产生的行为判断,.tex 文件包含在 text-mode-hook 中。 @ChristopherBarrington-Leigh 已更新。【参考方案2】:我认为@treyJackson 发现了问题,但这里有一些额外的 cmets:
顺便说一句,您使用text-mode-hook
切换到muse-mode
在各种情况下都会出现问题(因为您首先切换到文本模式,然后在中途激活缪斯模式,然后文本结束-模式激活(通常,剩下的工作不多,但 text-mode-hook 上可能有更多功能可以运行)仍将执行)。一种更强大的方法可能是:
(add-to-list 'auto-mode-alist '("\\.txt\\'" . text-or-muse-mode))
(defun text-or-muse-mode ()
(if (save-excursion
(goto-line 5)
(re-search-backward "\\* [A-Z][a-z]+.*\\|#title " 1 t))
(muse-mode)
(text-mode)))
当然,您也可以在第一行使用-*- muse -*-
,或者改用magic-mode-alist
。
【讨论】:
非常感谢。这很有用。但是,如果我已经正确测试了它,这会影响缓冲区名称中带有 .txt 的所有文件吗?而不是那些以 .txt 结尾的? 我不这么认为:"\\.txt\\'"
专门匹配文件名末尾的.txt
(而不是"\\.txt$"
,它也可以匹配中间的.txt
的名称,如果它后跟换行符)。以上是关于.emacs .txt 文件视觉线模式与缪斯模式同时的主要内容,如果未能解决你的问题,请参考以下文章
emacs 控制台模式 Org-mode 删除线未按预期显示