编辑:事实证明,我的.emacs文件的第二次编辑确实有效。 (参见本条目下面的评论。)
我尝试了几个.emacs的附加内容,以便在emacs中使用orgmode打开所有txt文件。他们没有工作。我怎样才能实现呢?
;;SET EMACS AS DEFAULT MAJOR MODE TO FOR ALL FILES WITH AN UNSPECIFIED MODE
(setq default-major-mode 'org-mode)
;;OPEN ALL TXT FILES IN ORGMODE
(add-to-list 'auto-mode-alist '("\\.txt$" . org-mode))
此外:
在某个目录orgmode中只打开txt文件会更好。任何暗示如何做到这一点也将不胜感激。
答案 0 :(得分:4)
另一种方法是使用目录本地变量。这很好,因为您可以将文件放在您希望此行为参与的任何目录中,并且它可以在任何子目录中递归工作。
在所需目录中创建名为.dir-locals.el
的文件。
以下是内容:
((nil (eval . (if (string-match ".txt$" (buffer-file-name))(org-mode)))))
如下所示:对于任何主要模式(nil
),eval
,请使用以下格式:
(if .... (org-mode))
答案 1 :(得分:3)
auto-mode-alist
中的正则表达式可能更复杂,例如"^/path/to/.*\\.txt$"
答案 2 :(得分:2)
您可以实现一个验证文件目录并修改缓冲模式的挂钩:
(add-hook 'find-file-hooks
(lambda ()
(let ((file (buffer-file-name)))
(when (and file (equal (file-name-directory file) "c:/temp/"))
(org-mode)))))
作为替代方案,您可以在文本文件的开头中添加模式行。在这种情况下,emacs将设置指定的模式。
; -*- mode: org;-*-
* header 1
** header 2
答案 3 :(得分:0)
我把Oleg Pavliv的一些代码粘贴在这里,以及来自elisp - File extension hook in Emacs - Stack Overflow
的yibe的代码。(defun use-org-mode-for-dot-txt-files-in-owncloud ()
(when (and (string-match owncloud buffer-file-name)
(string-match "\\.txt\\'" buffer-file-name))
(org-mode)))
(add-hook 'find-file-hook 'use-org-mode-for-dot-txt-files-in-owncloud)
这样,尽管ownCloud Web和手机应用程序目前只对.txt
个文件很友好,但是从我的PC上我可以使用Emacs'他们的组织模式。
(如果我将所有.txt
个文件设置为使用组织模式,则会中断todotxt-mode
。)
(注意owncloud
是一个字符串变量,等于我的ownCloud路径。)